Pruebe el coeficiente del modelo (pendiente de regresión) contra algún valor


20

En R, cuando tengo un modelo lineal (generalizada) ( lm, glm, gls, glmm, ...), ¿cómo puedo probar el coeficiente (pendiente de regresión) contra cualquier otro valor distinto a 0? En el resumen del modelo, los resultados de la prueba t del coeficiente se informan automáticamente, pero solo para comparación con 0. Quiero compararlo con otro valor.

Sé que puedo usar un truco con la reparametrización y ~ xcomo y - T*x ~ x, donde Testá el valor probado, y ejecutar este modelo reparametrizado, pero busco una solución más simple, que posiblemente funcione en el modelo original.


Respuestas:


17

Aquí hay una solución más amplia que funcionará con cualquier paquete, o incluso si solo tiene la salida de regresión (como de un documento).

Tome el coeficiente y su error estándar.

Calcule . Los df para son los mismos que serían para una prueba con .t=β^-βH0 0se(β^)tH0 0:β=0 0


1
Gracias Glen, lo sé por [esta gran respuesta]. Pero, ¿cómo obtendré el valor p del valor t?
— Curioso

2
@Curiouspt()
— Afín

@Curious: como Affine dice, la función R pt , o cualquier otra cosa que le dé el valor de t cdfs. Muchos paquetes tienen estos, y hay tablas t ampliamente disponibles.
— Glen_b -Reinstate a Monica el

Sería bueno si lm, lmer y los demás aceptaran un parámetro de prueba diferente de cero directamente.
— skan

@skan es literalmente una sola línea de código R para obtener un valor p; sería simple escribir una pequeña función para tomar la salida de summary.lm y producir una nueva tabla con sus especificaciones exactas.
— Glen_b -Reinstale a Monica

10

Puede usar una prueba t simple propuesta por Glen_b, o una prueba Wald más general.

La prueba de Wald permite probar múltiples hipótesis sobre múltiples parámetros. Está formulado como: donde R selecciona (una combinación de) coeficientes, y q indica el valor a ser probado, son los coeficientes de regresión estándar.Rβ=qβ

En su ejemplo, donde solo tiene una hipótesis sobre un parámetro, R es un vector de fila, con un valor de uno para el parámetro en cuestión y cero en otro lugar, y q es un escalar con la restricción para probar.

En R, puede ejecutar una prueba de Wald con la función linearHypothesis () de package car . Digamos que desea verificar si el segundo coeficiente (indicado por el argumento hipótesis.matriz ) es diferente a 0.1 (argumento rhs ):

reg <- lm(freeny)
coef(reg)

# wald test for lag.quarterly.revenue =0.1
>library(car)
>linearHypothesis(reg, hypothesis.matrix = c(0, 1, rep(0,3)), rhs=0.1)
#skip some result, look at last value on last row, of Pr(>F) 
  Res.Df       RSS Df  Sum of Sq      F Pr(>F)
1     35 0.0073811                            
2     34 0.0073750  1 6.0936e-06 0.0281 0.8679

Para la prueba t, esta función implementa la prueba t mostrada por Glen_b:

ttest <- function(reg, coefnum, val){
  co <- coef(summary(reg))
  tstat <- (co[coefnum,1]-val)/co[coefnum,2]
  2 * pt(abs(tstat), reg$df.residual, lower.tail = FALSE)
}

> ttest(reg, 2,0.1)
[1] 0.8678848

Asegurémonos de obtener el procedimiento correcto al comparar Wald, nuestra prueba t y la prueba t predeterminada de R, para la hipótesis estándar de que el segundo coeficiente es cero:

> linearHypothesis(reg, hypothesis.matrix = c(0, 1, rep(0,3)), rhs=0)[["Pr(>F)"]][2]
[1] 0.3904361
> ttest(reg, 2,0)
[1] 0.3904361
## The 'right' answer from R:
> coef(summary(reg))[2,4]
[1] 0.3904361

Debería obtener el mismo resultado con los tres procedimientos.


¡se ve bien! ¿Puedes por favor explicar el hypothesis.matrixparámetro?
— Curioso

No estoy seguro si la prueba de Wald lo hace. Tenía la intención de utilizar la prueba t normal que se informa de manera estándar junto con los parámetros, pero no con 0 sino con algún otro valor.
— Curioso

@Curious Hope, ¿está más claro ahora?
— Matifou

3

Al final, la solución más fácil fue hacer la reparametrización:

gls(I(y - T*x) ~ x, ...)

¿Producirá eso los mismos resultados?
— skan

Pero estás restando algo no independiente. ¿No sería un problema con los supuestos para mínimos cuadrados o con colinealidad? ¿En qué se diferencia de lm (y ~ x + + offset (T * x))?
— skan

1
@skan la regresión es condicional en x, no hay dependencia allí; debería ser lo mismo que usar offset.
— Glen_b: reinstala a Monica
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.