Recuperación de coeficientes brutos y variaciones de la regresión polinómica ortogonal

14

Parece que si tengo un modelo de regresión como yiβ0+β1xi+β2xi2+β3xi3Puedo ajustar un polinomio en bruto y obtener resultados poco confiables o ajustar un polinomio ortogonal y obtener coeficientes que no tienen una interpretación física directa (por ejemplo, no puedo usarlos para encontrar las ubicaciones de los extremos en la escala original). Parece que debería poder tener lo mejor de ambos mundos y ser capaz de transformar los coeficientes ortogonales ajustados y sus variaciones de nuevo a la escala bruta. Tomé un curso de posgrado en regresión lineal aplicada (usando Kutner, 5ed) y revisé el capítulo de regresión polinómica en Draper (3ed, referido por Kutner) pero no encontré ninguna discusión sobre cómo hacer esto. El texto de ayuda parapoly()La función en R no. Tampoco he encontrado nada en mi búsqueda en la web, incluido aquí. Está reconstruyendo coeficientes brutos (y obteniendo sus variaciones) a partir de coeficientes ajustados a un polinomio ortogonal ...

  1. imposible de hacer y estoy perdiendo el tiempo.
  2. quizás posible pero no se sabe cómo en el caso general.
  3. posible pero no discutido porque "¿quién querría?"
  4. posible pero no discutido porque "es obvio".

Si la respuesta es 3 o 4, estaría muy agradecido si alguien tuviera la paciencia de explicar cómo hacer esto o señalar una fuente que lo haga. Si es 1 o 2, todavía tendría curiosidad por saber cuál es el obstáculo. Muchas gracias por leer esto, y me disculpo de antemano si estoy pasando por alto algo obvio.

f1r3br4nd
fuente
1
No entiendo tus puntos. x, x 2 y x 3 no son ortogonales. Por lo tanto, están correlacionados y los parámetros de regresión podrían ser inestables, pero no es automáticamente el caso de que no sean confiables. La conversión a polinomios ortognonales puede ser más confiable. Pero, ¿qué hace que el coeficiente de las potencias originales de x sea más interpretable que los coeficientes de los polinomios ortogonales? Si x es la única variable como en el modelo y = a + bx, entonces ∆y = yi-yi-1 = b∆x yb es interpretable como el cambio en y por unidad de cambio en x. Pero con los poderes involucrados, tal interpretación se pierde. 23
Michael R. Chernick
Usé un modelo con solo x como variable para simplificar, pero en realidad estoy comparando curvas entre grupos de tratamiento. Entonces, dependiendo de qué términos son significativos y su magnitud, puedo interpretarlos, por ejemplo, un cambio general hacia arriba / hacia abajo, o una pendiente inicial mayor / menor. Además, como dice mi pregunta, una comparación natural para hacer entre curvas es la ubicación de los máximos / mínimos, que es más fácil de interpretar si está en la escala original. Entonces, su voto es para la opción 3, ¿lo tomo?
f1r3br4nd
No, aún no he descubierto si es posible o no. Acabo de entender por qué quieres hacerlo.
Michael R. Chernick
44
Bueno, tenga en cuenta que el modelo ajustado con polinomios ortogonales tendrá exactamente el mismo ajuste (es decir, los mismos , los mismos valores ajustados, etc.) que el modelo se ajusta con los términos polinómicos brutos. Por lo tanto, si está buscando relacionar esto con los datos originales, puede ver los coeficientes de los términos sin procesar pero usar los polinomios ortogonales para hacer inferencia para los términos individuales de una manera que "explique" la dependencia entre ellos. . R2
Macro
1
Resulta que las splines cúbicas y B-splines están en una clase por sí mismas, y son lo mejor de dos mundos.
Carl

Respuestas:

6

Si es posible.

Sea las partes no constantes de los polinomios ortogonales calculados a partir de x i . (Cada uno es un vector columna). La regresión de estos contra los x i que dar un ajuste perfecto. Puede realizar esto con el software incluso cuando no documente sus procedimientos para calcular polinomios ortogonales. La regresión de z j produce coeficientes γ i j para los cualesz1,z2,z3xixizjγij

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

El resultado es una matriz Γ que, tras la multiplicación correcta, convierte la matriz de diseño X = ( 1 ; x ; x 2 ; x 3 ) en Z = ( 1 ; z 1 ; z 2 ; z 3 ) = X Γ .4×4ΓX=(1;x;x2;x3)

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

Después de ajustar el modelo

E(Y)=Zβ

y la obtención de coeficientes estimados beta (un vector de columna de cuatro elementos), puede sustituir ( 1 ) para obtenerβ^(1)

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

Por lo tanto es el vector de coeficiente estimado para el modelo en términos del original (, ONU-ortogonalizado primas) poderes de xΓβ^x .

El siguiente Rcódigo ilustra estos procedimientos y los prueba con datos sintéticos.

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
fuente
Γ
110161
Dos años después ... @whuber, ¿es posible expandir esto también al IC del 95% de los coeficientes?
user2602640
@ user2602640 Sí. Debe extraer la matriz de varianza-covarianza de los coeficientes (usar vcovin R) para convertir las variaciones calculadas en una base en variaciones en la nueva base, y luego calcular los CI manualmente de la manera habitual.
whuber
@whuber Seguí tu comentario a mitad de camino, luego te perdí por completo ... ¿hay alguna posibilidad de que te compadezcas de un biólogo matemáticamente desafiado y lo escriba en código?
user2602640