2017-02-10 102 views
-1

glm式:GLM预测值

fit.full <- glm(y ~ a + b + c + d + e + f, data=df, family=binomial(logit)) 

glm输出:

Estimate Std. Error z value Pr(>|z|) 
a -0.0443 0.0182 -2.43 0.01530 * 
b1 -0.3247 0.0898 -3.62 0.00030 *** 
c2 0.0948 0.0322 2.94 0.00326 ** 

然后我决定适用glm到降低模型用于比较:

fit.reduced <- glm(y ~ a + b1 + c2, data=df, family=binomial(logit)) 

但是,上述代码产生了一个错误:

Error in eval(expr, envir, enclos) : object 'b1' not found

我不得不写下面的代码:

fit.reduced <- glm(y ~ a + b + c, data=df, family=binomial(logit)) 

是否有任何解决方案只进入:A,B1和C?顺便说一下,b和c变量分别有3和5个值。谢谢。

+0

在进行缩减拟合之前,您不必将b1和c2追加到df数据帧吗?glm应该如何知道这些数据? – duffymo

+0

b1和c2是值的b和c变量。他们已经在df了。 – hadafshar

+0

@索托斯。 b和c变量是多重分类的。 – hadafshar

回答

0

第一个模型的输出确实包含“b1”和“c2”作为系数的线条标签,但这并不意味着有这些名称的列。这意味着这些变量是具有这些名称的级别的因素。 glm的“开箱即用”设置会产生“处理对比”,因此非基本因子水平的系数会以其变量名称及其因子水平显示。尝试生成减少量模型只有这些级别,因为如果您删除了所有具有基本级别值的案例,将无法对它们进行比较。

如果您确实想运行具有相同列名称的模型,但从考虑中删除特定级别,然后使用glm支持的subset参数

+0

我用过'subset',但不幸的是它没有工作。 – hadafshar

+0

你需要展示你如何“使用子集”,以及详细说明什么“不起作用”。您还需要显示'str(df)'的输出并展开您正试图演示的内容。 –