首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在具有删除因子的数据帧上使用速度

在具有删除因子的数据帧上使用速度
EN

Stack Overflow用户
提问于 2013-10-30 23:58:52
回答 2查看 520关注 0票数 3

我试图使用R的speedglm包来估计回归模型。通常,结果与使用基R的glm函数相同,但是当我从speedglm中完全删除给定的因子级别时,speedglm会提供意想不到的行为。例如,请参见下面的代码:

代码语言:javascript
复制
dat1 <- data.frame(y=rnorm(100), x1=gl(5, 20)) 
dat2 <- subset(dat1, x1!=1)

glm("y ~ x1", dat2, family="gaussian")
Coefficients:
(Intercept)          x13          x14          x15  
    -0.2497       0.6268       0.3900       0.2811 

speedglm(as.formula("y ~ x1"), dat2)
Coefficients:
(Intercept)          x12          x13          x14          x15  
    0.03145     -0.28114      0.34563      0.10887           NA 

在这里,这两个函数提供不同的结果,因为因子级别的x1==1已经从dat2中删除了。如果我用dat1代替,结果将是相同的。在处理像speedglm这样的数据时,是否有办法使dat2的行为像glm一样?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-31 01:00:20

我认为机器人是关键。

str(droplevels(dat2))str(dat2) --尽管x1==1被删除了,但仍在因素级别中列出

所以speedglm(as.formula("y ~ x1"), droplevels(dat2))应该等于glm("y ~ x1", dat2, family="gaussian")

票数 2
EN

Stack Overflow用户

发布于 2013-10-31 02:27:41

具有因子自变量的glm的默认行为是使用第一个非空级别作为引用类别。似乎航速是将最后一级作为参考类别。要获得类似的结果,可以在调用glm时使用relevel

代码语言:javascript
复制
 set.seed(2)
 dat1 <- data.frame(y=rnorm(100), x1=gl(5, 20)) 
 dat2 <- subset(dat1, x1!=1)
 glm(y ~ relevel(x1,"5"), dat2, family="gaussian")

 Coefficients:
   (Intercept)  relevel(x1, "5")2  relevel(x1, "5")3  relevel(x1, "5")4  
     -0.27163            0.27135            0.36688            0.09934  

speedglm(as.formula("y ~ x1"), dat2)
 Coefficients:
 (Intercept)          x12          x13          x14          x15  
     -0.27163      0.27135      0.36688      0.09934           NA  
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19696073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档