是否可以在回归结果中使用模型矩阵而不使用模型矩阵的名称?
我需要经历这样的过程,因为我有一些互动,而我没有观察到。(即)互动的结果是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?
如果使用此公式语法运行,则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
对象,因此我们通过添加类信息来解决问题,但是它确实具有几乎所有相同的属性(您可以看到“ call”丢失了),并且在大多数情况下,其行为应与常规glm
对象相同,功能,包括summary()
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句