Вот небольшой пример:
MyDf<-data.frame(x=c(1,2,3,4), y=c(1.2, .7, -.5, -3))
Теперь с 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
Теперь попробуйте то же самое с biglm
из biglm
пакета:
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
Обратите внимание, что нам нужно print
и, digits
чтобы увидеть значение р. Коэффициенты и стандартные ошибки одинаковы, но значения р очень разные. Почему это так?
r
regression
p-value
linear-model
Джон Пол
источник
источник
pt(-3.491, 2)*2
сpnorm(-3.491)*2
, например.Ответы:
Чтобы увидеть, какие значения p верны (если они есть), давайте повторим расчет для смоделированных данных, в которых нулевая гипотеза верна. В данной настройке вычисление соответствует наименьшим квадратам данных (x, y), и нулевая гипотеза состоит в том, что наклон равен нулю. В этом вопросе есть четыре значения x 1,2,3,4 и предполагаемая ошибка около 0,7, поэтому давайте включим это в симуляцию.
Вот установка, написанная, чтобы быть понятной всем, даже незнакомым
R
.Симуляция генерирует независимые ошибки, добавляет их к
y.expected
, вызываетlm
для подбора иsummary
вычисления p-значений. Хотя это неэффективно, оно проверяет фактический код, который был использован. Мы все еще можем сделать тысячи итераций в секунду:Правильно вычисленные p-значения будут действовать как однородные случайные числа между и10 1 когда нулевая гипотеза верна. Гистограмма этих p-значений позволит нам проверить это визуально - выглядит ли это примерно горизонтально - и критерий однородности по критерию хи-квадрат позволит провести более формальную оценку. Вот гистограмма:
и для тех, кто может представить, что это не достаточно равномерно, вот критерий хи-квадрат:
Большое значение p в этом тесте показывает, что эти результаты согласуются с ожидаемой однородностью. Другими словами,
lm
это правильно.Откуда же тогда возникают различия в p-значениях? Давайте проверим вероятные формулы, которые могут быть вызваны для вычисления p-значения. В любом случае тестовая статистика будет
равно расхождению между оцененным коэффициентом и предполагаемым (и правильным значением) , выраженным как кратное стандартной погрешности оценки коэффициента. В вопросе эти значения ; & beta=0β^ β=0
для оценки перехвата и
для оценки уклона. Обычно их сравнивают с распределением Стьюдента, у которого параметр степеней свободы равен (объем данных) минус (количество оценочных коэффициентов). Давайте вычислим это для перехвата:4 2t 4 2
(Этот расчет умножает левый Стьюдент вероятность на , потому что это тест на против двусторонний альтернативного .) Это согласуется с выходом.2 H 0 : β = 0 H A : β ≠ 0t 2 H0:β=0 HA:β≠0
lm
Альтернативный расчет будет использовать стандартное нормальное распределение аппроксимировать Student распределение. Давайте посмотрим, что он производит:t
Конечно же:t
biglm
предполагается, что нулевое распределение статистики является стандартным Normal. Насколько большая ошибка это? Повторное выполнение предыдущего моделирования с использованием вместо дает эту гистограмму p-значений:biglm
lm
Почти 18% этих значений р меньше , стандартного порога «значимости». Это огромная ошибка.0.05
Вот некоторые уроки, которые мы можем извлечь из этого небольшого исследования:
Не используйте аппроксимации, полученные из асимптотического анализа (например, стандартное нормальное распределение) с небольшими наборами данных.
Знай свое программное обеспечение.
источник