Коефіцієнт тестової моделі (нахил регресії) проти деякого значення


20

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

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


Відповіді:


17

Ось більш широке рішення, яке буде працювати з будь-яким пакетом або навіть якщо у вас є лише вихід регресії (наприклад, з паперу).

Візьмемо коефіцієнт та його стандартну похибку.

Обчислити . Df дляtтакі самі, як і для тесту зH0:β=0.t=β^βH0s.e.(β^)tH0:β=0


1
Дякую Глен, я знаю це з [цієї чудової відповіді]. Але як я отримаю p-значення від t-значення?
Цікаво

2
@Curiouspt()
Affine

@Curious: Як говорить Affinem функція R pt - або все інше, що дає значення t cdfs. У багатьох пакетах їх є, і є широко доступні таблиці.
Glen_b -Встановіть Моніку

Було б добре, якби lm, lmer та інші прийняли параметр тесту, відмінний від нуля безпосередньо.
скан

@skan - це буквально один рядок коду R, щоб отримати p-значення; було б простим питанням написати невелику функцію, щоб взяти вихід sum.lm та створити нову таблицю за вашими точними характеристиками.
Glen_b -Встановіть Моніку

10

Ви можете використовувати простий t-тест, запропонований Glen_b, або більш загальний тест Wald.

Rβ=qβ

У вашому прикладі, коли у вас є лише одна гіпотеза про один параметр, R - вектор рядків зі значенням одиниці для відповідного параметра і нуль в іншому місці, а q - скаляр із обмеженням тесту.

У R ви можете запустити тест Wald з функцією linearHypothesis () з автомобіля пакетів . Скажімо, ви хочете перевірити, чи другий коефіцієнт (позначений аргументом 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

Переконаймося, що ми отримали правильну процедуру, порівнюючи Wald, наш 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

Ви повинні отримати однаковий результат з трьома процедурами.


Виглядає чудово! Чи можете ви поясніть цей hypothesis.matrixпараметр?
Цікаво

Я не впевнений, чи це робить тест Уолда. Я мав на увазі використовувати звичайний t-тест, який стандартно повідомляється разом з параметрами, але не з 0, а з деяким іншим значенням.
Цікаво

@Curious Сподіваюся, що зараз зрозуміліше?
Матифу

3

Зрештою, найпростішим рішенням було зробити репараметризацію:

gls(I(y - T*x) ~ x, ...)

Чи це дасть ті самі результати?
скан

Але ви підкреслюєте щось, що не є незалежним. Хіба це не буде проблемою з припущеннями про найменші квадрати чи з колінеарністю? Чим він відрізняється від lm (y ~ x + + зміщення (T * x))?
скан

1
@скан регресія умовна х, там немає залежності; це має бути таким же, як використання офсету.
Glen_b -Встановіть Моніку
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.