Aqui está um pequeno exemplo:
MyDf<-data.frame(x=c(1,2,3,4), y=c(1.2, .7, -.5, -3))
Agora com o 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
Agora, tente a mesma coisa com biglm
o biglm
pacote:
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
Observe que precisamos do print
e digits
para ver o valor-p. Os coeficientes e erros padrão são os mesmos, mas os valores de p são muito diferentes. Porque isto é assim?
r
regression
p-value
linear-model
John Paul
fonte
fonte
pt(-3.491, 2)*2
compnorm(-3.491)*2
, por exemplo.Respostas:
Para ver quais valores p estão corretos (se houver), repita o cálculo para dados simulados nos quais a hipótese nula é verdadeira. Na configuração atual, o cálculo é um quadrado mínimo ajustado aos dados (x, y) e a hipótese nula é de que a inclinação é zero. Na questão, existem quatro valores de x 1,2,3,4 e o erro estimado é de cerca de 0,7, então vamos incorporar isso na simulação.
Aqui está a configuração, escrita para ser compreensível para todos, mesmo para aqueles que não estão familiarizados
R
.A simulação gera erros independentes, os adiciona
y.expected
, chamalm
para fazer o ajuste esummary
calcular os valores-p. Embora isso seja ineficiente, ele está testando o código real que foi usado. Ainda podemos fazer milhares de iterações em um segundo:e, para quem pode imaginar que isso não é suficientemente uniforme, eis o teste do qui-quadrado:
O grande valor p neste teste mostra que esses resultados são consistentes com a uniformidade esperada. Em outras palavras,
lm
está correto.De onde, então, vêm as diferenças nos valores de p? Vamos verificar as fórmulas prováveis que podem ser invocadas para calcular um valor-p. Em qualquer caso, a estatística do teste será
para a estimativa de interceptação e
lm
biglm
biglm
lm
Algumas lições que podemos aprender com esta pequena investigação são:
Não use aproximações derivadas de análises assintóticas (como a distribuição normal padrão) com pequenos conjuntos de dados.
Conheça o seu software.
fonte