Коэффициент тестовой модели (наклон регрессии) относительно некоторого значения

20

В R, когда у меня есть (обобщенная) линейная модель ( lm, glm, gls, glmm, ...), как я могу проверить коэффициент (регрессионный наклон) в отношении любого другого значения , чем 0? В сводке модели результаты t-теста коэффициента автоматически сообщаются, но только для сравнения с 0. Я хочу сравнить его с другим значением.

Я знаю, что могу использовать трюк с репараметризацией y ~ xкак y - T*x ~ x, где Tнаходится проверенное значение, и запустить эту репараметризованную модель, но я ищу более простое решение, которое, возможно, сработает на исходной модели.

любознательный
источник
связанные: stats.stackexchange.com/questions/29981/…
любопытно

Ответы:

17

Вот более широкое решение, которое будет работать с любым пакетом, или даже если у вас есть только результат регрессии (например, из бумаги).

Возьмите коэффициент и его стандартную ошибку.

Вычислить . Df дляtтакие же, как и для теста сH0:β=0.Tзнак равноβ^-βЧАС0се(β^)TЧАС0:βзнак равно0

Glen_b - Восстановить Монику
источник
1
Спасибо Глен, я знаю это из [этого замечательного ответа]. Но как я получу p-значение из t-значения?
Любопытно,
2
@Curiouspt()
аффинное
@Curious: Как говорит Affinem функция R pt - или что-нибудь еще, что дает вам значение t cdfs. Многие пакеты имеют их, и есть широко доступные t-таблицы.
Glen_b
Было бы хорошо, если бы lm, lmer и другие приняли тестовый параметр, отличный от нуля напрямую.
Скан
@skan это буквально одна строка кода R, чтобы получить p-значение; было бы несложно написать небольшую функцию для вывода итоговой информации summary.lm и создать новую таблицу с вашими точными спецификациями.
Glen_b
10

Вы можете использовать либо простой t-тест, предложенный Glen_b, либо более общий тест Wald.

Тест Вальда позволяет проверить несколько гипотез по нескольким параметрам. Сформулировано как:рβзнак равноQβ является стандартными коэффициентами регрессии.

В вашем примере, где у вас есть только одна гипотеза об одном параметре, R - вектор строки, со значением 1 для рассматриваемого параметра и нуля в другом месте, а q - скаляр с ограничением для проверки.

В R вы можете запустить тест Вальда с функцией linearHypothesis () из пакета car . Допустим, вы хотите проверить, отличается ли второй коэффициент (указанный аргументом hypothesis.matrix ) от 0,1 (аргумент 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

Для t-теста эта функция реализует t-тест, показанный 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

Давайте удостоверимся, что мы получили правильную процедуру, сравнив Вальд, наш t-критерий и t-критерий R по умолчанию, для стандартной гипотезы о том, что второй коэффициент равен нулю:

> 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

Вы должны получить тот же результат с тремя процедурами.

Matifou
источник
выглядит хорошо! Можете ли вы объяснить hypothesis.matrixпараметр?
Любопытно,
Я не уверен, что тест Уолда это делает. Я имел в виду использовать обычный t-критерий, о котором стандартно сообщается вместе с параметрами, но не с 0, а с некоторым другим значением.
любопытно
@ Любопытно Надеюсь, теперь стало понятнее?
Matifou
3

В конце концов, самым простым решением было сделать репараметризацию:

gls(I(y - T*x) ~ x, ...)
любознательный
источник
Это даст те же результаты?
Скан
Но вы вычитаете что-то не независимое. Разве это не было бы проблемой с допущениями для наименьших квадратов или с коллинеарностью? Чем он отличается от lm (y ~ x + + offset (T * x))?
Скан
1
@skan регрессия зависит от x, там нет зависимости; оно должно быть таким же, как при использовании смещения.
Glen_b