Aquí hay un pequeño ejemplo:
MyDf<-data.frame(x=c(1,2,3,4), y=c(1.2, .7, -.5, -3))
Ahora con el base::lm
:
> lm(y~x, data=MyDf) %>% summary
Call:
lm(formula = y ~ x, data = MyDf)
Residuals:
1 2 3 4
-0.47 0.41 0.59 -0.53
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.0500 0.8738 3.491 0.0732 .
x -1.3800 0.3191 -4.325 0.0495 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.7134 on 2 degrees of freedom
Multiple R-squared: 0.9034, Adjusted R-squared: 0.8551
F-statistic: 18.71 on 1 and 2 DF, p-value: 0.04952
Ahora, intente lo mismo con biglm
el biglm
paquete:
XX<-biglm(y~x, data=MyDf)
print(summary(XX), digits=5)
Large data regression model: biglm(y ~ x, data = MyDf)
Sample size = 4
Coef (95% CI) SE p
(Intercept) 3.05 1.30243 4.79757 0.87378 0.00048
x -1.38 -2.01812 -0.74188 0.31906 0.00002
Tenga en cuenta que necesitamos el print
y digits
para ver el valor p. Los coeficientes y los errores estándar son los mismos, pero los valores p son muy diferentes. ¿Por qué esto es tan?
r
regression
p-value
linear-model
Juan Pablo
fuente
fuente
pt(-3.491, 2)*2
conpnorm(-3.491)*2
, por ejemplo.Respuestas:
Para ver qué valores p son correctos (si los hay), repitamos el cálculo para los datos simulados en los que la hipótesis nula es verdadera. En la configuración actual, el cálculo es un ajuste de mínimos cuadrados a los datos (x, y) y la hipótesis nula es que la pendiente es cero. En la pregunta hay cuatro valores de x 1,2,3,4 y el error estimado es de alrededor de 0.7, así que incorporemos eso en la simulación.
Aquí está la configuración, escrita para ser comprensible para todos, incluso para aquellos que no están familiarizados
R
.La simulación genera errores independientes, los agrega
y.expected
, invocalm
para hacer el ajuste ysummary
para calcular los valores p. Aunque esto es ineficiente, está probando el código real que se utilizó. Todavía podemos hacer miles de iteraciones en un segundo:Los valores p calculados correctamente actuarán como números aleatorios uniformes entre y10 1 cuando la hipótesis nula sea verdadera. Un histograma de estos valores p nos permitirá verificar esto visualmente, si se ve más o menos horizontal, y una prueba de uniformidad chi-cuadrado permitirá una evaluación más formal. Aquí está el histograma:
y, para aquellos que puedan imaginar que esto no es lo suficientemente uniforme, aquí está la prueba de ji cuadrado:
El gran valor p en esta prueba muestra que estos resultados son consistentes con la uniformidad esperada. En otras palabras,
lm
es correcto.¿De dónde, entonces, vienen las diferencias en los valores p? Verifiquemos las fórmulas probables que podrían invocarse para calcular un valor p. En cualquier caso, la estadística de prueba será
igual a la discrepancia entre el coeficiente estimado y el hipotético (y el valor correcto) , expresado como un múltiplo del error estándar de la estimación del coeficiente. En la pregunta estos valores son ß=0β^ β=0
para la estimación de intercepción y
para la estimación de la pendiente. Normalmente, estos se compararían con la distribución Student, cuyo parámetro de grados de libertad es (la cantidad de datos) menos (el número de coeficientes estimados). Vamos a calcularlo para la intercepción:4 2t 4 2
(Este cálculo multiplica la probabilidad de Student de cola izquierda por porque esta es una prueba de contra la alternativa de dos lados ) Está de acuerdo con la salida.2 H 0 : β = 0 H A : β ≠ 0t 2 H0:β=0 HA:β≠0
lm
Un cálculo alternativo usaría la distribución Normal estándar para aproximar la distribución Student . Veamos que produce:t
Efectivamente:t
biglm
supone que la distribución nula del estadístico es Normal normal. ¿Cuánto de un error es esto? Volver a ejecutar la simulación anterior usando en lugar de da este histograma de valores p:biglm
lm
Casi el 18% de estos valores p son inferiores a , un umbral estándar de "significancia". Ese es un error enorme.0.05
Algunas lecciones que podemos aprender de esta pequeña investigación son:
No utilice aproximaciones derivadas de análisis asintóticos (como la distribución Normal estándar) con conjuntos de datos pequeños.
Conoce tu software.
fuente