【发布时间】:2021-07-21 22:14:08
【问题描述】:
R 中的 cplot 函数确实不能处理具有两个级别的因子变量吗? 我想为每个“年龄”值(1-10)绘制一个具有“z”(0或1)的平均边际效应的图。使用
cplot(model1, x="age", dx="z", what="效果")
工作正常,而
cplot(model2, x="age", dx="zf", what="效果")
导致错误消息。
# Simulate x and z data, uncorrelated.
age <- rep(c(1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10),100)
z <- rep(c(0,0,0,0,0,0,0,0,0, 0, 1,1,1,1,1,1,1,1,1, 1),100)
zf <- factor(z)
library(margins)
set.seed(8352)
# Simulate data.
e <- rlogis(2000,0,1)
Y <- -12 + age + 11*z + e
y <- ifelse(Y > 0, 1, 0)
da <- data.frame(y,age,z,zf)
# Estimate equation with z as numeric variable.
model1 <- glm(y ~ age + z, family=binomial(link="logit"), da)
cplot(model1, x="age", dx="z", what="effect")
# Estimate equation with z as a factor.
model2 <- glm(y ~ age + zf, family=binomial(link="logit"), da)
cplot(model2, x="age", dx="zf", what="effect")
最终的 cplot 调用生成:
plot.window(...) 中的错误:需要有限的“xlim”值 另外:警告信息: 1:在 min(x) 中:min 没有非缺失参数;返回 Inf 2:在 max(x) 中:max 没有非缺失参数;返回-Inf 3:在 min(x) 中:min 没有非缺失参数;返回 Inf 4:在 max(x) 中:max 没有非缺失参数;返回 -Inf
感谢您的帮助,
本·佩尔泽。
【问题讨论】:
-
如果你使用“zf1”,我相信你可能会得到它来绘图
-
嗨,我只是稍微更改了代码。也许这导致了你的不收敛?我的 R 版本是 R-4.0.4。我又试了一次,收敛没有问题。
-
好的,很好!!!您在哪里看到为因子指定 dx 的方式?我用谷歌搜索了很长时间,但没有找到这个选项。谢谢!
-
其实我并没有真正使用这个绘图功能……但我过去遇到过这个因素和重新平衡的问题,所以我想我会在这里试一试。
标签: r