我有一个数据框,其中包含一个具有以下状态的离散列
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) ?
答案 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)
但请确保您正确解释参数。这些不是每个级别的手段,那些级别与参考级别之间的平均差异。