Як перевірити одночасність рівності обраних коефіцієнтів у моделі logit або probit?


14

Як перевірити одночасність рівності обраних коефіцієнтів у моделі logit або probit? Що таке стандартний підхід і який сучасний підхід?

Відповіді:


30

Тест на Вальд

Одним із стандартних підходів є тест Вальда . Це те, що робить команда Stata test після регресії logit або probit. Давайте подивимось, як це працює в R, подивившись приклад:

mydata <- read.csv("http://www.ats.ucla.edu/stat/data/binary.csv") # Load dataset from the web
mydata$rank <- factor(mydata$rank)
mylogit <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial") # calculate the logistic regression

summary(mylogit)

Coefficients:
             Estimate Std. Error z value Pr(>|z|)    
(Intercept) -3.989979   1.139951  -3.500 0.000465 ***
gre          0.002264   0.001094   2.070 0.038465 *  
gpa          0.804038   0.331819   2.423 0.015388 *  
rank2       -0.675443   0.316490  -2.134 0.032829 *  
rank3       -1.340204   0.345306  -3.881 0.000104 ***
rank4       -1.551464   0.417832  -3.713 0.000205 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Скажімо, ви хочете перевірити гіпотезу vs. . Це еквівалент тестування . Статистика тесту Wald така: β g r eβ g p a β g r e - β g p a = 0βgre=βgpaβgreβgpaβgreβgpa=0

W=(β^β0)se^(β^)N(0,1)

або

W2=(θ^θ0)2Var(θ^)χ12

Наш тут і . Отже, нам потрібно лише стандартна помилка . Ми можемо обчислити стандартну помилку методом Delta : ; & betaгге-& betaгрthetas0=0& betaгге-& betaгрθ^βgreβgpaθ0=0βgreβgpa

se^(βgreβgpa)Var(βgre)+Var(βgpa)2Cov(βgre,βgpa)

Тому нам також потрібна коваріація та . Матриця дисперсії-коваріації може бути вилучена командою після запуску логістичної регресії: β g p aβgreβgpavcov

var.mat <- vcov(mylogit)[c("gre", "gpa"),c("gre", "gpa")]

colnames(var.mat) <- rownames(var.mat) <- c("gre", "gpa")

              gre           gpa
gre  1.196831e-06 -0.0001241775
gpa -1.241775e-04  0.1101040465

Нарешті, ми можемо обчислити стандартну помилку:

se <- sqrt(1.196831e-06 + 0.1101040465 -2*-0.0001241775)
se
[1] 0.3321951

Отже, ваша Wald -значення єz

wald.z <- (gre-gpa)/se
wald.z
[1] -2.413564

Щоб отримати -значення, просто використовуйте стандартний звичайний розподіл:p

2*pnorm(-2.413564)
[1] 0.01579735

У цьому випадку ми маємо докази того, що коефіцієнти відрізняються один від одного. Цей підхід може бути розширений до більш ніж двох коефіцієнтів.

Використання multcomp

Цей досить виснажливий розрахунок можна зручно зробити при Rвикористанні multcompпакету. Ось той же приклад, що описано вище, але зроблено з multcomp:

library(multcomp)

glht.mod <- glht(mylogit, linfct = c("gre - gpa = 0"))

summary(glht.mod)    

Linear Hypotheses:
               Estimate Std. Error z value Pr(>|z|)  
gre - gpa == 0  -0.8018     0.3322  -2.414   0.0158 *

confint(glht.mod)

Довірчий інтервал для різниці коефіцієнтів також може бути розрахований:

Quantile = 1.96
95% family-wise confidence level


Linear Hypotheses:
               Estimate lwr     upr    
gre - gpa == 0 -0.8018  -1.4529 -0.1507

Додаткові приклади multcompдив. Тут чи тут .


Тест на коефіцієнт ймовірності (LRT)

Коефіцієнти логістичної регресії знаходять за максимальною вірогідністю. Але оскільки функція ймовірності включає багато продуктів, максимальна ймовірність журналу максимальна, що перетворює продукцію на суму. Модель, яка краще підходить, має більш високу ймовірність журналу. Модель, що включає більше змінних, має принаймні таку ж ймовірність, що і нульова модель. Позначимо ймовірність журналу альтернативної моделі (модель, що містить більше змінних) з та ймовірність журналу нульової моделі з , статистика тесту на коефіцієнт ймовірності: L L 0LLaLL0

D=2(LLaLL0)χdf1df22

Статистика тесту коефіцієнта ймовірності випливає з причому ступеня свободи є різницею в кількості змінних. У нашому випадку це 2.χ2

Для проведення тесту на коефіцієнт ймовірності нам також потрібно встановити модель з обмеженням щоб можна було порівняти дві ймовірності. Повна модель має вигляд . Наша модель обмежень має вигляд: . log ( p iβgre=βgpalog(р я

log(pi1pi)=β0+β1gre+β2gpa+β3rank2+β4rank3+β5rank4
log(pi1pi)=β0+β1(gre+gpa)+β2rank2+β3rank3+β4rank4
mylogit2 <- glm(admit ~ I(gre + gpa) + rank, data = mydata, family = "binomial")

У нашому випадку ми можемо використовувати logLikдля отримання ймовірності журналу двох моделей після логістичної регресії:

L1 <- logLik(mylogit)
L1
'log Lik.' -229.2587 (df=6)

L2 <- logLik(mylogit2)
L2
'log Lik.' -232.2416 (df=5)

Модель , яка містить обмеження на greі gpaмає трохи більш високу логарифмічну функцію правдоподібності (-232.24) по порівнянні з повною моделлю (-229.26). Наша статистика тестових коефіцієнтів імовірності:

D <- 2*(L1 - L2)
D
[1] 16.44923

Тепер ми можемо використовувати CDF для обчислення значення значення: сχ22p

1-pchisq(D, df=1)
[1] 0.01458625

Значення дуже мало, що свідчить про те, що коефіцієнти різні.p

R вбудований тест відношення ймовірності; ми можемо використовувати anovaфункцію для обчислення тесту на коефіцієнт ймовірності:

anova(mylogit2, mylogit, test="LRT")

Analysis of Deviance Table

Model 1: admit ~ I(gre + gpa) + rank
Model 2: admit ~ gre + gpa + rank
  Resid. Df Resid. Dev Df Deviance Pr(>Chi)  
1       395     464.48                       
2       394     458.52  1   5.9658  0.01459 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Знову ми маємо вагомі докази того, що коефіцієнти greі gpaзначно відрізняються один від одного.


Тестовий бал (aka Rao's Score test aka тест множника Лагранжа)

Функція Score є похідною функції журналу вірогідності ( ), де - параметри, а дані (для ілюстрації для цього показано універсальний випадок цілі):log L ( θ | x ) θ xU(θ)logL(θ|x)θx

U(θ)=logL(θ|x)θ

Це в основному нахил функції вірогідності журналу. Далі, нехай є інформаційною матрицею Фішера, яка є негативним очікуванням другої похідної функції вірогідності логарифма щодо . Статистика бальних тестів:I(θ)θ

S(θ0)=U(θ02)I(θ0)χ12

Тестовий бал можна також розраховувати, використовуючи anova(статистична оцінка тесту називається "Rao"):

anova(mylogit2, mylogit,  test="Rao")

Analysis of Deviance Table

Model 1: admit ~ I(gre + gpa) + rank
Model 2: admit ~ gre + gpa + rank
  Resid. Df Resid. Dev Df Deviance    Rao Pr(>Chi)  
1       395     464.48                              
2       394     458.52  1   5.9658 5.9144  0.01502 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Висновок такий же, як і раніше.


Примітка

Цікавий взаємозв'язок між різними статистичними тестами, коли модель лінійна, є (Джонстон та ДіНардо (1997): Економетричні методи ): Wald LR Score.


1
gregpaβ1=β2=0β1=β2β1=β2gregpaβgre=βgpa

1
@SibbsGambling Хороший улов! Я відповідно оновив свою відповідь.
COOLSerdash

Чи обмежується це лише суцільними прогнокторами, чи я можу, наприклад, також бачити, чи значно відрізняються два рівні категоріальної змінної? Скажімо, чи є різницею між rank3 та rank4 значна?
Даніель

1
@Daniel Так, цей підхід також може бути використаний для рівнів категоричної змінної. Ці multcompпакети робить його особливо легко. Наприклад, спробуйте наступне: glht.mod <- glht(mylogit, linfct = c("rank3 - rank4= 0")). Але набагато простішим способом було б зробити rank3еталонний рівень (за допомогою mydata$rank <- relevel(mydata$rank, ref="3")), а потім просто використовувати нормальний вихід регресії. Кожен рівень коефіцієнта порівнюється з еталонним рівнем. Значення р rank4було б бажаним порівнянням.
COOLSerdash

1
glht0,591linfct = c("rank3 - rank4= 0")mcp(rank="Tukey")rank

9

Ви не вказали свої змінні, якщо вони є бінарними чи чимось іншим. Я думаю, ви говорите про бінарні змінні. Існують також багаточлени версії моделі probit і logit.

Загалом, можна використовувати повну трійність тестових підходів, тобто

Імовірність-коефіцієнт співвідношення

LM-тест

Вальд-тест

Кожен тест використовує різні тестові статистичні дані. Стандартним підходом було б скласти один із трьох тестів. Усі три можна використовувати для проведення спільних тестів.

Тест LR використовує різницю вірогідності журналу обмеженої та необмеженої моделі. Отже модель з обмеженням - це модель, в якій задані коефіцієнти встановлюються на нуль. Без обмежень є "нормальна" модель. Перевага тесту Уолда полягає в тому, що оцінюється лише необмежена модель. В основному він запитує, чи обмеження майже задоволено, якщо воно оцінюється на необмеженому MLE. У випадку тесту Лагранжа-множника слід оцінювати лише обмежену модель. Обмежений ML-оцінювач використовується для обчислення балу необмеженої моделі. Зазвичай цей бал не дорівнює нулю, тому ця невідповідність є основою тесту LR. Тест LM у вашому контексті також може бути використаний для перевірки на гетероседастичність.


7

Стандартні підходи - це тест Вальда, тест на коефіцієнт ймовірності та тестовий бал. Асимптотично вони повинні бути однаковими. На мій досвід, випробування на коефіцієнт ймовірності мають тенденцію до кращого результату при моделюванні на кінцевих зразках, але випадки, коли це має місце, були б у надзвичайно екстремальних (малих вибіркових) сценаріях, де я б сприйняв усі ці тести лише як приблизне наближення. Однак, залежно від вашої моделі (кількість коваріатів, наявність ефектів взаємодії) та ваших даних (мультиколінентність, граничний розподіл вашої залежної змінної), "чудове царство Асимптотії" може бути добре наближене напрочуд невеликою кількістю спостережень.

Нижче наводиться приклад подібного моделювання в Stata з використанням коефіцієнта ймовірності Wald та тестування балів у вибірці, що містить лише 150 спостережень. Навіть у такому невеликому зразку три випробування дають досить схожі p-значення, а вибіркове розподіл p-значень, коли нульова гіпотеза відповідає дійсності, здається, відповідає однаковому розподілу як слід (або принаймні відхиленням від рівномірного розподілу не більше, ніж можна було б очікувати через наслідок випадковості в експерименті Монте-Карло).

clear all
set more off

// data preparation
sysuse nlsw88, clear

gen byte edcat = cond(grade <  12, 1,     ///
                 cond(grade == 12, 2, 3)) ///
                 if grade < .
label define edcat 1 "less than high school" ///
                   2 "high school"           ///
                   3 "more than high school"
label value edcat edcat
label variable edcat "education in categories"

// create cascading dummies, i.e.
// edcat2 compares high school with less than high school
// edcat3 compares more than high school with high school
gen byte edcat2 = (edcat >= 2) if edcat < .
gen byte edcat3 = (edcat >= 3) if edcat < .

keep union edcat2 edcat3 race south
bsample 150 if !missing(union, edcat2, edcat3, race, south)

// constraining edcat2 = edcat3 is equivalent to adding 
// a linear effect (in the log odds) of edcat
constraint define 1 edcat2 = edcat3

// estimate the constrained model
logit union edcat2 edcat3 i.race i.south, constraint(1)

// predict the probabilities
predict pr
gen byte ysim = .
gen w = .

program define sim, rclass
    // create a dependent variable such that the null hypothesis is true
    replace ysim = runiform() < pr

    // estimate the constrained model
    logit ysim edcat2 edcat3 i.race i.south, constraint(1)
    est store constr

    // score test
    tempname b0
    matrix `b0' = e(b)
    logit ysim edcat2 edcat3 i.race i.south, from(`b0') iter(0)
    matrix chi = e(gradient)*e(V)*e(gradient)'
    return scalar p_score = chi2tail(1,chi[1,1])

    // estimate unconstrained model
    logit ysim edcat2 edcat3 i.race i.south 
    est store full

    // Wald test
    test edcat2 = edcat3
    return scalar p_Wald = r(p)

    // likelihood ratio test
    lrtest full constr
    return scalar p_lr = r(p)
end

simulate p_score=r(p_score) p_Wald=r(p_Wald) p_lr=r(p_lr), reps(2000) : sim
simpplot p*, overall reps(20000) scheme(s2color) ylab(,angle(horizontal))

введіть тут опис зображення


2
бальний тест - це інша назва того, що @ jen-bohold називає тестом множника Лагранжа (LM).
Maarten Buis

Приємна відповідь (+1). Мені особливо подобаються зусилля моделювання. Я не знав, як обчислити бальний тест у Stata. Спасибі.
COOLSerdash
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.