从R中的glm获得所有离散状态的系数

时间:2014-05-21 01:27:17

标签: r dataframe glm

我有一个数据框,其中包含一个具有以下状态的离散列

StateName          PX127857  PX128030  PX100049  PX100330  PX106316  PX115690  PX125484  PX112410 PX100778     
    Support           1          1         8         4         7         5         8         12        13

当我使用

使用glm拟合数据框时
  model<- glm(formula, data = DATAFRAME, family = "binomial")

模型$系数返回9个离散状态中只有8个的系数, 对于状态PX128030,我没有得到任何系数

我想我明白为什么会发生这种情况但有没有办法为像PX128030这样的状态返回null或0,这样模型$系数的顺序和数量与相同级别(dataframe $ column)

1 个答案:

答案 0 :(得分:0)

这确实是一个基本的统计问题。将分类变量放入模型时,无法计算每个级别的效果。您需要一个约束来解决问题。您可以通过多种方式处理这一问题,但R中最常见的是将一个级别指定为参考级别,然后所有其他级别的系数实际上是该级别与参考级别的差异的度量。因此,该参考水平的效果不是0,它在截距的估计中很简单。参考水平通常是因子的第一级。

我认为所有术语都存储在模型的xterms属性中。也许像这样的辅助函数可能有用

levelvals<-function(m) {
    ml <- m$xlevels
    fv<-lapply(names(ml), function(x) v<-paste(x, ml[[x]],sep=""))
    cf <- coefficients(m)
    r<-lapply(fv, function(v) {structure(cf[v], names=v)})
    names(r)<-names(ml)
    r
}
m<-lm(y~f, dd)
levelvals(m)

但请确保您正确解释参数。这些不是每个级别的手段,那些级别与参考级别之间的平均差异。