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.