Làm thế nào để kiểm tra sự bình đẳng đồng thời của các hệ số được chọn trong mô hình logit hoặc probit?


14

Làm thế nào để kiểm tra sự bình đẳng đồng thời của các hệ số được chọn trong mô hình logit hoặc probit? Cách tiếp cận tiêu chuẩn là gì và trạng thái của phương pháp nghệ thuật là gì?

Câu trả lời:


30

Kiểm tra Wald

Một cách tiếp cận tiêu chuẩn là bài kiểm tra Wald . Đây là những gì lệnh Stata test thực hiện sau khi hồi quy logit hoặc probit. Hãy xem cách nó hoạt động trong R bằng cách xem một ví dụ:

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

Này, bạn muốn kiểm tra giả thuyết vs. β g r eβ g p một . Đây là tương đương với việc thử nghiệm β g r e - β g p một = 0 . Thống kê kiểm tra Wald là:βgre=βgpaβgreβgpaβgreβgpa=0

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

hoặc là

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

Chúng tôi θ đây là β g r e - β g p mộtθ 0 = 0 . Vì vậy, tất cả những gì chúng ta cần là sai số chuẩn của β g r e - β g p a . Chúng ta có thể tính toán sai số chuẩn bằng phương pháp Delta :θ^βgreβgpaθ0=0βgreβgpa

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

Vì vậy, chúng ta cũng cần hiệp phương sai của β g p a . Ma trận phương sai hiệp phương sai có thể được trích xuất bằng lệnh sau khi chạy hồi quy logistic:β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

Cuối cùng, chúng ta có thể tính toán lỗi tiêu chuẩn:

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

Vì vậy, giá trị Wald của bạn làz

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

Để có giá trị , chỉ cần sử dụng phân phối chuẩn thông thường:p

2*pnorm(-2.413564)
[1] 0.01579735

Trong trường hợp này, chúng tôi có bằng chứng cho thấy các hệ số khác nhau. Cách tiếp cận này có thể được mở rộng đến hơn hai hệ số.

Sử dụng multcomp

Tính toán khá tẻ nhạt này có thể được thực hiện thuận tiện trong Rviệc sử dụng multcompgói. Đây là ví dụ tương tự như trên nhưng được thực hiện với 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)

Cũng có thể tính khoảng tin cậy cho sự khác biệt của các hệ số:

Quantile = 1.96
95% family-wise confidence level


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

Để biết thêm ví dụ về multcomp, xem tại đây hoặc ở đây .


Kiểm tra tỷ lệ khả năng (LRT)

Các hệ số của hồi quy logistic được tìm thấy theo khả năng tối đa. Nhưng bởi vì chức năng khả năng liên quan đến rất nhiều sản phẩm, khả năng đăng nhập được tối đa hóa để biến các sản phẩm thành tổng. Mô hình phù hợp hơn có khả năng đăng nhập cao hơn. Mô hình liên quan đến nhiều biến hơn có ít nhất khả năng giống như mô hình null. Biểu thị khả năng ghi nhật ký của mô hình thay thế (mô hình chứa nhiều biến hơn) với và khả năng ghi nhật ký của mô hình null với L L 0 , thống kê kiểm tra tỷ lệ khả năng là:LLaLL0

D=2(LLaLL0)χdf1df22

Thống kê kiểm tra tỷ lệ khả năng tuân theo phân phối với mức độ tự do là sự khác biệt về số lượng biến. Trong trường hợp của chúng tôi, đây là 2.χ2

Để thực hiện kiểm tra tỷ lệ khả năng, chúng ta cũng cần điều chỉnh mô hình với ràng buộc để có thể so sánh hai khả năng. Mô hình đầy đủ có nhật ký biểu mẫu ( p iβgre=βgpa. Mô hình ràng buộc của chúng ta có dạng:log(p i

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")

Trong trường hợp của chúng tôi, chúng tôi có thể sử dụng logLikđể trích xuất khả năng đăng nhập của hai mô hình sau khi hồi quy logistic:

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

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

Mô hình chứa các ràng buộc trên gregpacó khả năng đăng nhập cao hơn một chút (-232,24) so ​​với mô hình đầy đủ (-229,26). Thống kê kiểm tra tỷ lệ khả năng của chúng tôi là:

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

χ22p

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

p

R có kiểm tra tỷ lệ khả năng được xây dựng trong; chúng ta có thể sử dụng anovahàm để tính toán kiểm tra tỷ lệ thích:

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

Một lần nữa, chúng tôi có bằng chứng mạnh mẽ rằng các hệ số gregpakhác biệt đáng kể với nhau.


Kiểm tra điểm số (còn gọi là kiểm tra Điểm của Rao hay còn gọi là kiểm tra số nhân Lagrange)

Bạn(θ)đăng nhậpL(θ|x)θx

Bạn(θ)= =đăng nhậpL(θ|x)θ

Tôi(θ)θ

S(θ0)= =Bạn(θ02)Tôi(θ0)~χ12

Kiểm tra điểm số cũng có thể được tính bằng cách sử dụng anova(số liệu thống kê kiểm tra điểm được gọi là "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

Kết luận vẫn giống như trước đây.


Ghi chú

Một mối quan hệ thú vị giữa các thống kê kiểm tra khác nhau khi mô hình là tuyến tính là (Johnston và DiNardo (1997): Phương pháp kinh tế lượng ): Wald Trung tâm Ghi bàn.


1
I wonder why the reduced model simply excludes gre and gpa? Isn't that testing β1=β2=0, not β1=β2? To me, to correctly test β1=β2, we need to keep gre and gpa and meanwhile impose βgre=βgpa.
Sibbs Gambling

1
@SibbsGambling Good catch! I updated my answer accordingly.
COOLSerdash

Is this limited to continuous predictors only, or could I - for instance - also see whether two levels of a categorical variable are significantly different? Let's say, is the difference between rank3 and rank4 significant?
Daniel

1
@Daniel Yes, this approach can also be used for levels of a categorical variable. The multcomp packages makes it particularly easy. For example, try this: glht.mod <- glht(mylogit, linfct = c("rank3 - rank4= 0")). But a much easier way would be to make rank3 the reference level (using mydata$rank <- relevel(mydata$rank, ref="3")) and then just use the normal regression output. Each level of the factor is compared to the reference level. The p-value for rank4 would be the desired comparison.
COOLSerdash

1
@Daniel The p-values from the model output (changed reference level) and glht are the same for me (about 0.591). Regarding your second question: linfct = c("rank3 - rank4= 0") tests only one linear hypothesis whereas mcp(rank="Tukey") tests all 6 pairwise comparisons of rank. So the p-values have to be adjusted for multiple comparisons. This means that the p-values using Tukey's test are generally higher than the single comparison.
COOLSerdash

9

You did not specify your variables, if they are binary or something else. I think you talk about binary variables. There also exist multinomial versions of the probit and logit model.

In general, you can use the complete trinity of test approaches, i.e.

Likelihood-Ratio-test

LM-Test

Wald-Test

Each test uses different test-statistics. The standard approach would be to take one of the three tests. All three can be used to do joint tests.

The LR test uses the differnce of the log-likelihood of a restricted and the unrestricted model. So the restricted model is the model, in which the specified coefficients are set to zero. The unrestricted is the "normal" model. The Wald test has the advantage, that only the unrestriced model is estimated. It basically asks, if the restriction is nearly satisfied if it is evaluated at the unrestriced MLE. In case of the Lagrange-Multiplier test only the restricted model has to be estimated. The restricted ML estimator is used to calculate the score of the unrestricted model. This score will be usually not zero, so this discrepancy is the basis of the LR test. The LM-Test can in your context also be used to test for heteroscedasticity.


7

The standard approaches are the Wald test, the likelihood ratio test and the score test. Asymptotically they should be the same. In my experience the likelihood ratio tests tends to perform slightly better in simulations on finite samples, but the cases where this matters would be in very extreme (small sample) scenarios where I would take all of these tests as a rough approximation only. However, depending on your model (number of covariates, presence of interaction effects) and your data (multicolinearity, the marginal distribution of your dependent variable), the "wonderful kingdom of Asymptotia" can be well approximated by a surprisingly small number of observations.

Dưới đây là một ví dụ về mô phỏng như vậy trong Stata bằng cách sử dụng Wald, tỷ lệ khả năng và điểm kiểm tra trong một mẫu chỉ có 150 quan sát. Ngay cả trong một mẫu nhỏ như vậy, ba thử nghiệm tạo ra các giá trị p khá giống nhau và phân phối lấy mẫu của các giá trị p khi giả thuyết null là đúng dường như tuân theo phân phối đồng đều như vậy (hoặc ít nhất là sai lệch so với phân phối đồng đều không lớn hơn người ta mong đợi do tính ngẫu nhiên trong một thí nghiệm ở Monte Carlo).

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))

enter image description here


2
score test is a different name for what @jen-bohold called a Lagrange multiplier (LM) test.
Maarten Buis

Nice answer (+1). I especially like the effort of the simulation. I didn't know how to calculate the score test in Stata. Thanks.
COOLSerdash
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.