R中的GLM子模型测试:为什么在删除一个连续协变量后所有统计数据仍然相同?

时间:2017-12-10 02:16:02

标签: r glm

我正在做一个子模型测试。较小的模型嵌套在较大的模型中。与较小的模型相比,较大的模型具有一个连续变量。我使用似然比检验。结果很奇怪。两种模型都具有相同的统计数据,例如残差偏差和df。我还发现两个模型具有相同的估计系数是std.errors。事实怎么可能?

summary(m2221)

Call:
glm(formula = clm ~ veh_age + veh_body + agecat + veh_value:veh_age + 
veh_value:area, family = "binomial", data = Car)

Deviance Residuals: 
Min       1Q   Median       3Q      Max  
-0.9245  -0.3939  -0.3683  -0.3437   2.7095  

Coefficients:
                    Estimate Std. Error z value Pr(>|z|)    
(Intercept)        -1.294118   0.382755  -3.381 0.000722 ***
veh_age2            0.051790   0.098463   0.526 0.598897    
veh_age3           -0.166801   0.094789  -1.760 0.078457 .  
veh_age4           -0.239862   0.096154  -2.495 0.012611 *  
veh_bodyCONVT      -2.184124   0.707884  -3.085 0.002033 ** 
veh_bodyCOUPE      -0.850675   0.393625  -2.161 0.030685 *  
veh_bodyHBACK      -1.105087   0.374134  -2.954 0.003140 ** 
veh_bodyHDTOP      -0.973472   0.383404  -2.539 0.011116 *  
veh_bodyMCARA      -0.649036   0.469407  -1.383 0.166765    
veh_bodyMIBUS      -1.295135   0.404691  -3.200 0.001373 ** 
veh_bodyPANVN      -0.903032   0.395295  -2.284 0.022345 *  
veh_bodyRDSTR      -1.108488   0.826541  -1.341 0.179883    
veh_bodySEDAN      -1.097931   0.373578  -2.939 0.003293 ** 
veh_bodySTNWG      -1.129122   0.373713  -3.021 0.002516 ** 
veh_bodyTRUCK      -1.156099   0.384088  -3.010 0.002613 ** 
veh_bodyUTE        -1.343958   0.377653  -3.559 0.000373 ***
agecat2            -0.198002   0.058382  -3.391 0.000695 ***
agecat3            -0.224492   0.056905  -3.945 7.98e-05 ***
agecat4            -0.253377   0.056774  -4.463 8.09e-06 ***
agecat5            -0.441906   0.063227  -6.989 2.76e-12 ***
agecat6            -0.447231   0.072292  -6.186 6.15e-10 ***
veh_age1:veh_value -0.000637   0.026387  -0.024 0.980740    
veh_age2:veh_value  0.035386   0.031465   1.125 0.260753    
veh_age3:veh_value  0.114485   0.036690   3.120 0.001806 ** 
veh_age4:veh_value  0.189866   0.057573   3.298 0.000974 ***
veh_value:areaB     0.044099   0.021550   2.046 0.040722 *  
veh_value:areaC     0.021892   0.019189   1.141 0.253931    
veh_value:areaD    -0.023616   0.024939  -0.947 0.343658    
veh_value:areaE    -0.013506   0.026886  -0.502 0.615415    
veh_value:areaF     0.057780   0.026602   2.172 0.029850 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

Null deviance: 33767  on 67855  degrees of freedom
Residual deviance: 33592  on 67826  degrees of freedom
AIC: 33652

Number of Fisher Scoring iterations: 5

 summary(m222)

Call:
glm(formula = clm ~ veh_value + veh_age + veh_body + agecat + 
    veh_value:veh_age + veh_value:area, family = "binomial", 
    data = Car)

  Deviance Residuals: 
  Min       1Q   Median       3Q      Max  
-0.9245  -0.3939  -0.3683  -0.3437   2.7095  

 Coefficients:
                    Estimate Std. Error z value Pr(>|z|)    
(Intercept)        -1.294118   0.382755  -3.381 0.000722 ***
veh_value          -0.000637   0.026387  -0.024 0.980740    
veh_age2            0.051790   0.098463   0.526 0.598897    
veh_age3           -0.166801   0.094789  -1.760 0.078457 .  
veh_age4           -0.239862   0.096154  -2.495 0.012611 *  
veh_bodyCONVT      -2.184124   0.707884  -3.085 0.002033 ** 
veh_bodyCOUPE      -0.850675   0.393625  -2.161 0.030685 *  
veh_bodyHBACK      -1.105087   0.374134  -2.954 0.003140 ** 
veh_bodyHDTOP      -0.973472   0.383404  -2.539 0.011116 *  
veh_bodyMCARA      -0.649036   0.469407  -1.383 0.166765    
veh_bodyMIBUS      -1.295135   0.404691  -3.200 0.001373 ** 
veh_bodyPANVN      -0.903032   0.395295  -2.284 0.022345 *  
veh_bodyRDSTR      -1.108488   0.826541  -1.341 0.179883    
veh_bodySEDAN      -1.097931   0.373578  -2.939 0.003293 ** 
veh_bodySTNWG      -1.129122   0.373713  -3.021 0.002516 ** 
veh_bodyTRUCK      -1.156099   0.384088  -3.010 0.002613 ** 
veh_bodyUTE        -1.343958   0.377653  -3.559 0.000373 ***
agecat2            -0.198002   0.058382  -3.391 0.000695 ***
agecat3            -0.224492   0.056905  -3.945 7.98e-05 ***
agecat4            -0.253377   0.056774  -4.463 8.09e-06 ***
agecat5            -0.441906   0.063227  -6.989 2.76e-12 ***
agecat6            -0.447231   0.072292  -6.186 6.15e-10 ***
veh_value:veh_age2  0.036023   0.034997   1.029 0.303331    
veh_value:veh_age3  0.115122   0.039476   2.916 0.003543 ** 
veh_value:veh_age4  0.190503   0.058691   3.246 0.001171 ** 
veh_value:areaB     0.044099   0.021550   2.046 0.040722 *  
veh_value:areaC     0.021892   0.019189   1.141 0.253931    
veh_value:areaD    -0.023616   0.024939  -0.947 0.343658    
veh_value:areaE    -0.013506   0.026886  -0.502 0.615415    
veh_value:areaF     0.057780   0.026602   2.172 0.029850 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

Null deviance: 33767  on 67855  degrees of freedom
Residual deviance: 33592  on 67826  degrees of freedom
AIC: 33652

anova(m2221,m222,  test ="LRT")###
Analysis of Deviance Table

Model 1: clm ~ veh_age + veh_body + agecat + veh_value:veh_age + 
veh_value:area
Model 2: clm ~ veh_value + veh_age + veh_body + agecat + veh_value:veh_age + 
veh_value:area
Resid. Df Resid. Dev Df Deviance Pr(>Chi)
1     67826      33592                     
2     67826      33592  0        0  

1 个答案:

答案 0 :(得分:0)

您已经以两种不同的方式指定了相同的模型。为了表明这一点,我将首先解释一下底下的内容,然后我将逐步介绍两个模型的系数,以表明它们是相同的,我将以更高层次的直觉和解释结束。

创建不同交互条件的不同公式

首先,两个模型之间的唯一区别是第一个模型包含veh_value作为预测因子,而第二个模型则不包括veh_value。但是,model.matrix与两个模型中的其他预测变量进行了互动。

因此,让我们考虑一个简单的可重复示例,看看R在我们这样做时会做什么。我将使用colnames(model.matrix(am ~ mpg + factor(cyl):mpg, mtcars)) #[1] "(Intercept)" "mpg" "mpg:factor(cyl)6" "mpg:factor(cyl)8" colnames(model.matrix(am ~ factor(cyl):mpg, mtcars)) #"(Intercept)" "factor(cyl)4:mpg" "factor(cyl)6:mpg" "factor(cyl)8:mpg" 简单地输入两个不同的公式,并查看R创建的连续和虚拟变量。

mpg

请注意,在第一次调用中,我包含了连续预测器factor(cyl)4:mpg,而我没有在第二次调用中包含它(一个更简单的例子,说明了你在做什么)。

现在请注意,第二个模型矩阵在模型中包含一个额外的交互变量(mpg),而第一个不包含。换句话说,因为我们没有直接在模型中包含cyl,所以veh_age的所有级别都会包含在交互中。

您的模型是相同的

您的模型基本上与上面的简单示例做同样的事情,我们可以证明当一天结束时的系数实际上是相同的。

在您的第一个模型中,当veh_value作为与veh_value的互动而包含veh_age1:veh_value -0.000637 0.026387 -0.024 0.980740 veh_age2:veh_value 0.035386 0.031465 1.125 0.260753 veh_age3:veh_value 0.114485 0.036690 3.120 0.001806 ** veh_age4:veh_value 0.189866 0.057573 3.298 0.000974 *** 时,所有4个级别veh_age都包含在内,但veh_value未包含在模型中。

veh_value

在您的第二个模型中,当与veh_value:veh_age2 0.036023 0.034997 1.029 0.303331 veh_value:veh_age3 0.115122 0.039476 2.916 0.003543 ** veh_value:veh_age4 0.190503 0.058691 3.246 0.001171 ** 进行互动时,只会包含3个veh_age级别,因为模型中包含veh_age = 1

veh_value

现在,关键是看模型实际上是相同的。只需遍历veh_age的所有级别即可显示。

首先考虑veh_age = 1

对于这两个模型,当-0.000637# For first model veh_age1:veh_value -0.000637 0.026387 -0.024 0.980740 # For second model veh_value -0.000637 0.026387 -0.024 0.980740 时,veh_age = 2veh_value的系数为veh_age

veh_age = 2

现在考虑0.035386

对于这两个模型,当# For first model veh_age2:veh_value 0.035386 0.031465 1.125 0.260753 # For second model - note sum of the two below is 0.035386 veh_value -0.000637 0.026387 -0.024 0.980740 veh_value:veh_age2 0.036023 0.034997 1.029 0.303331 veh_value:veh_age时,veh_valueveh_age的系数为veh_value:veh_age

veh_value

Intution

当您加入互动veh_value时,您实际上是在说您希望系数veh_age连续变量以data = [ { "Name": "John_Doe", "Age" : 25 } { "Name": "Jane_Roe", "Age" : 26 } ] 为分类变量。包括互动{ "Name": "John_Doe", "Age" : 25 } ct作为预测因素也是同样的事情。您想知道cleartool的系数,但您希望根据#!/bin/ksh cmUsers="user1,user2"; myuserName=$ENV{LOGNAME}; #checking whether current user is part of cmUsers list or not. if [[ "$cmUsers" =~ m/$myUserName/i ]]; then # if user belongs to cmUsers list, then trying to lock the lable type, # if it fails exiting the process, else printing the success message cleartool lock -nuser \"$cmUsers\" lbtype:${label}@/vobs/admin_rec" if [ $? -ne 0 ]; then echo "CRITICAL: Unable to lock label type: \"${label}\"" exit 1 fi echo "Label ${label} has been successfully locked by $cmUsers" fi 的值对其进行调节。