Чтобы увидеть, какие значения p верны (если они есть), давайте повторим расчет для смоделированных данных, в которых нулевая гипотеза верна. В данной настройке вычисление соответствует наименьшим квадратам данных (x, y), и нулевая гипотеза состоит в том, что наклон равен нулю. В этом вопросе есть четыре значения x 1,2,3,4 и предполагаемая ошибка около 0,7, поэтому давайте включим это в симуляцию.
Вот установка, написанная, чтобы быть понятной всем, даже незнакомым R
.
beta <- c(intercept=0, slope=0)
sigma <- 0.7
x <- 1:4
y.expected <- beta["intercept"] + beta["slope"] * x
Симуляция генерирует независимые ошибки, добавляет их к y.expected
, вызывает lm
для подбора и summary
вычисления p-значений. Хотя это неэффективно, оно проверяет фактический код, который был использован. Мы все еще можем сделать тысячи итераций в секунду:
n.sim <- 1e3
set.seed(17)
data.simulated <- matrix(rnorm(n.sim*length(y.expected), y.expected, sigma), ncol=n.sim)
slope.p.value <- function(e) coef(summary(lm(y.expected + e ~ x)))["x", "Pr(>|t|)"]
p.values <- apply(data.simulated, 2, slope.p.value)
Правильно вычисленные p-значения будут действовать как однородные случайные числа между и101 когда нулевая гипотеза верна. Гистограмма этих p-значений позволит нам проверить это визуально - выглядит ли это примерно горизонтально - и критерий однородности по критерию хи-квадрат позволит провести более формальную оценку. Вот гистограмма:
h <- hist(p.values, breaks=seq(0, 1, length.out=20))
и для тех, кто может представить, что это не достаточно равномерно, вот критерий хи-квадрат:
chisq.test(h$counts)
X-квадрат = 13,042, df = 18, значение p = 0,7891
Большое значение p в этом тесте показывает, что эти результаты согласуются с ожидаемой однородностью. Другими словами, lm
это правильно.
Откуда же тогда возникают различия в p-значениях? Давайте проверим вероятные формулы, которые могут быть вызваны для вычисления p-значения. В любом случае тестовая статистика будет
|t|=∣∣∣∣β^−0se(β^)∣∣∣∣,
равно расхождению между оцененным коэффициентом и предполагаемым (и правильным значением) , выраженным как кратное стандартной погрешности оценки коэффициента. В вопросе эти значения ; & beta=0β^β=0
|t|=∣∣∣3.050.87378∣∣∣=3.491
для оценки перехвата и
|t|=∣∣∣−1.380.31906∣∣∣=4.321
для оценки уклона. Обычно их сравнивают с распределением Стьюдента, у которого параметр степеней свободы равен (объем данных) минус (количество оценочных коэффициентов). Давайте вычислим это для перехвата:4 2t42
pt(-abs(3.05/0.87378), 4-2) * 2
[1] 0.0732
(Этот расчет умножает левый Стьюдент вероятность на , потому что это тест на против двусторонний альтернативного .) Это согласуется с выходом.2 H 0 : β = 0 H A : β ≠ 0t2H0:β=0HA:β≠0lm
Альтернативный расчет будет использовать стандартное нормальное распределение аппроксимировать Student распределение. Давайте посмотрим, что он производит:t
pnorm(-abs(3.05/0.87378)) * 2
[1] 0.000482
Конечно же: biglm
предполагается, что нулевое распределение статистики является стандартным Normal. Насколько большая ошибка это? Повторное выполнение предыдущего моделирования с использованием вместо дает эту гистограмму p-значений:tbiglm
lm
Почти 18% этих значений р меньше , стандартного порога «значимости». Это огромная ошибка.0.05
Вот некоторые уроки, которые мы можем извлечь из этого небольшого исследования:
Не используйте аппроксимации, полученные из асимптотического анализа (например, стандартное нормальное распределение) с небольшими наборами данных.
Знай свое программное обеспечение.
pt(-3.491, 2)*2
сpnorm(-3.491)*2
, например.