1

是否可以在回归中使用模型矩阵而在回归结果中没有模型矩阵的名称?

我需要经历这样一个过程,因为我有一些我没有观察到的交互。(ie) 交互的结果是NA

可以在此处找到相关问题。

以下是一些数据来说明我的观点:

mydata <- read.csv("http://www.ats.ucla.edu/stat/data/binary.csv")
str(mydata)

gre_ <- mydata$gre-mean(mydata$gre)

a <- model.matrix(~-1+gre_:factor(rank),data=mydata)[,-c(2)]

summary(glm(admit~gpa+gre+factor(rank)+a,data=mydata, family=binomial))

结果

Call:
glm(formula = admit ~ gpa + gre + rank + a, family = binomial, 
data = mydata)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.6449  -0.8886  -0.6332   1.1706   2.1949  

Coefficients:
                      Estimate Std. Error z value Pr(>|z|)    
(Intercept)         -3.0039781  1.4012928  -2.144   0.0321 *  
gpa                  0.7634679  0.3297215   2.315   0.0206 *  
gre                  0.0016098  0.0016634   0.968   0.3332    
rank                -0.5584921  0.1288588  -4.334 1.46e-05 ***
agre_:factor(rank)1  0.0014010  0.0028001   0.500   0.6168    
agre_:factor(rank)3  0.0010074  0.0025007   0.403   0.6871    
agre_:factor(rank)4  0.0009936  0.0034111   0.291   0.7708    
---

我们如何摆脱结果中的model.matrix名称a

4

1 回答 1

2

如果您使用此公式语法运行,R 将把“a”放在那里。您可以提取系数的名称并删除第一个“a”,如果您喜欢gsub()或使用substr()删除第一个字母。这取决于您希望如何处理它们。

另一种选择是自己使用glm.fit和指定完整的模型矩阵。就像是

a <- model.matrix(~-1+gre_:factor(rank),data=mydata)[,-c(2)]
b <- model.matrix(~gpa+gre+rank, data=mydata)
mm<-cbind(b,a)

ff<-glm.fit(mm,mydata$admit, family=binomial())
class(ff)<-c("glm","lm")
summary(ff)

将返回

Call:
NULL

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.6449  -0.8886  -0.6332   1.1706   2.1949  

Coefficients:
                     Estimate Std. Error z value Pr(>|z|)    
(Intercept)        -3.0039781  1.4012928  -2.144   0.0321 *  
gpa                 0.7634679  0.3297215   2.315   0.0206 *  
gre                 0.0016098  0.0016634   0.968   0.3332    
rank               -0.5584921  0.1288588  -4.334 1.46e-05 ***
gre_:factor(rank)1  0.0014010  0.0028001   0.500   0.6168    
gre_:factor(rank)3  0.0010074  0.0025007   0.403   0.6871    
gre_:factor(rank)4  0.0009936  0.0034111   0.291   0.7708    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 499.98  on 399  degrees of freedom
Residual deviance: 459.13  on 393  degrees of freedom
AIC: 473.13

Number of Fisher Scoring iterations: 4

在这里,您的估计是相同的,并且您的变量名没有改变。由于从技术上讲它不是一个真实的glm对象,我们通过添加类信息来进行一些小技巧,但它确实具有几乎所有相同的属性(您可以看到“调用”缺失)并且在大多数情况下应该表现得像一个普通glm对象功能,包括summary().

于 2014-06-10T17:36:52.323 回答