Récupération des coefficients bruts et des variances de la régression polynomiale orthogonale

14

Il semble que si j'ai un modèle de régression tel que yiβ0+β1xi+β2xi2+β3xi3Je peux soit adapter un polynôme brut et obtenir des résultats peu fiables, soit ajuster un polynôme orthogonal et obtenir des coefficients qui n'ont pas d'interprétation physique directe (par exemple, je ne peux pas les utiliser pour trouver les emplacements des extrema sur l'échelle d'origine). On dirait que je devrais être capable d'avoir le meilleur des deux mondes et être capable de retransformer les coefficients orthogonaux ajustés et leurs variances à l'échelle brute. J'ai suivi un cours d'études supérieures en régression linéaire appliquée (en utilisant Kutner, 5ed) et j'ai parcouru le chapitre sur la régression polynomiale dans Draper (3ed, mentionné par Kutner), mais je n'ai trouvé aucune discussion sur la façon de procéder. Le texte d'aide pour lepoly()fonction dans R ne fonctionne pas. Je n'ai rien trouvé non plus dans ma recherche sur le Web, y compris ici. Reconstruit des coefficients bruts (et obtient leurs variances) à partir de coefficients ajustés à un polynôme orthogonal ...

  1. impossible à faire et je perds mon temps.
  2. peut-être possible mais ne sait pas comment dans le cas général.
  3. possible mais pas discuté parce que "qui voudrait?"
  4. possible mais pas discuté car "c'est évident".

Si la réponse est 3 ou 4, je serais très reconnaissant à quelqu'un d'avoir la patience d'expliquer comment procéder ou de désigner une source qui le ferait. Si c'est 1 ou 2, je serais toujours curieux de savoir quel est l'obstacle. Merci beaucoup d'avoir lu ceci, et je m'excuse à l'avance si j'oublie quelque chose d'évident.

f1r3br4nd
la source
1
Je ne comprends pas vos points. x, x 2 et x 3 ne sont pas orthogonaux. Ils sont donc corrélés et les paramètres de régression pourraient être instables, mais il n'est pas automatique qu'ils ne soient pas fiables. La conversion en polynômes orthognonaux peut être plus fiable. Mais qu'est-ce qui rend le coefficient des puissances d'origine de x plus interprétable que les coefficients des polynômes orthogonaux? Si x est la seule variable comme dans le modèle y = a + bx alors ∆y = yi-yi-1 = b∆x et b est interprétable comme le changement de y par unité change en x. Mais avec les pouvoirs impliqués, une telle interprétation est perdue. 23
Michael R. Chernick
J'ai utilisé un modèle avec juste x comme variable pour la simplicité, mais en réalité je compare les courbes entre les groupes de traitement. Donc, selon les termes qui sont significatifs et leur ampleur, je peux les interpréter - par exemple un décalage global vers le haut / vers le bas, ou une pente initiale plus / moins grande. De plus, comme ma question le dit, une comparaison naturelle à faire entre les courbes est l'emplacement des maxima / minima, qui est plus facile à interpréter si c'est à l'échelle d'origine. Donc, votre vote est pour le choix 3, je suppose?
f1r3br4nd
Non, je n'ai pas encore compris si c'est possible ou pas. Je viens de comprendre pourquoi tu veux le faire.
Michael R. Chernick
4
Eh bien, notez que l'ajustement du modèle avec des polynômes orthogonaux aura exactement le même ajustement (c'est-à-dire le même , les mêmes valeurs ajustées, etc.) que l'ajustement du modèle avec les termes polynomiaux bruts. Donc, si vous cherchez à relier cela aux données d'origine, vous pouvez regarder les coefficients pour les termes bruts mais utiliser les polynômes orthogonaux pour faire l'inférence pour les termes individuels d'une manière qui "tient compte" de la dépendance entre eux . R2
Macro
1
Il s'avère que les splines cubiques et les splines B sont dans une classe à elles seules et sont le meilleur des deux mondes.
Carl

Réponses:

6

Oui c'est possible.

Soit z1,z2,z3 les parties non constantes des polynômes orthogonaux calculés à partir de . (Chacun est un vecteur de colonne.) La régression de ceux-ci contre le x i doit donner un ajustement parfait. Vous pouvez effectuer cette opération avec le logiciel même s'il ne documente pas ses procédures de calcul des polynômes orthogonaux. La régression de z j donne des coefficients γ i j pour lesquelsxixizjγij

zij=γj0+xiγj1+xi2γj2+xi3γj3.

Le résultat est une matrice Γ qui, lors d'une multiplication à droite, convertit la matrice de conception X = ( 1 ; x ; x 2 ; x 3 ) en Z = (4×4ΓX=(1;x;x2;x3)

(1)Z=(1;z1;z2;z3)=XΓ.

Après le montage du modèle

E(Y)=Zβ

β^(1)

Y^=Zβ^=(XΓ)β^=X(Γβ^).

Γβ^x

Le Rcode suivant illustre ces procédures et les teste avec des données synthétiques.

n <- 10        # Number of observations
d <- 3         # Degree
#
# Synthesize a regressor, its powers, and orthogonal polynomials thereof.
#
x <- rnorm(n)
x.p <- outer(x, 0:d, `^`); colnames(x.p) <- c("Intercept", paste0("x.", 1:d))
z <- poly(x, d)
#
# Compute the orthogonal polynomials in terms of the powers via OLS.
#
xform <- lm(cbind(1, z) ~ x.p-1)
gamma <- coef(xform)
#
# Verify the transformation: all components should be tiny, certainly
# infinitesimal compared to 1.
#
if (!all.equal(as.vector(1 + crossprod(x.p %*% gamma - cbind(1,z)) - 1), 
    rep(0, (d+1)^2)))
  warning("Transformation is inaccurate.")
#
# Fit the model with orthogonal polynomials.
#
y <- x + rnorm(n)
fit <- lm(y ~ z)
#summary(fit)
#
# As a check, fit the model with raw powers.
#
fit.p <- lm(y ~ .-1, data.frame(x.p))
#summary(fit.p)
#
# Compare the results.
#
(rbind(Computed=as.vector(gamma %*% coef(fit)), Fit=coef(fit.p)))

if (!all.equal(as.vector(gamma %*% coef(fit)), as.vector(coef(fit.p))))
  warning("Results were not the same.")
whuber
la source
Γ
110161 annule cet effet. Cela implémente le test annoncé dans le bloc de commentaire de code précédent.
whuber
Deux ans plus tard ... @whuber, est-il possible d'étendre cela aux IC à 95% des coefficients également?
user2602640
@ user2602640 Oui. Vous devez extraire la matrice variance-covariance des coefficients (à utiliser vcovdans R) pour convertir les variances calculées sur une base en variances sur la nouvelle base, puis calculer manuellement les IC de la manière habituelle.
whuber
@whuber J'ai suivi votre commentaire à mi-parcours, puis je vous ai perdu entièrement ... toute chance que vous preniez pitié d'un biologiste aux prises avec des difficultés mathématiques et que vous l'écriviez dans le code?
user2602640