r - 如何在 R 中运行具有二元结果的高原二次模型?
问题描述
我正在尝试在 R 中建立一个广义线性模型,其中 y 的预测概率遵循二次曲线,但在最大值处达到一个平台。
我已经找到了一些使用 Mistcherlich 曲线 ( https://plantcropmodels.files.wordpress.com/2016/11/growth-models1.pdf ) 的线性模型的解决方案,但是,我正在努力为 glm 找到一个解决方案。
查看 R - mtcars 中的示例数据集 - 我想将 vs 建模为 mpg 的函数,但与下面的方法不同,我希望 vs 的预测概率在某个最大值处达到稳定。在示例中,这将是 mpg==32.4 但我希望如果应用不同的函数,这可能会有所不同(否则我只需复制所有 mpg >= 32.4 值的最大值
model <- glm(vs ~ poly(mpg,2), data = mtcars, family = "binomial")
summary(model)
temp.data <- expand.grid(mpg = seq(10, 34, 0.1))
temp.data$pred <- predict(model, temp.data, type="response", allow.new.levels=TRUE)
glimpse(temp.data)
temp.data <- temp.data %>% group_by(mpg) %>% mutate(predprob = mean(pred, na.rm=TRUE))
# which mpg has the highest predicted probability
temp.data[which.max(temp.data$predprob), c("mpg", "predprob")] # 32.4
output <- aggregate(temp.data, by = list(temp.data$mpg),FUN = mean, na.rm=TRUE)
output
output[unique(output$mpg), c("mpg", "predprob")]
reg <- ggplot(temp.data, aes(x=mpg, y=predprob)) +
geom_line(color = "black") +
geom_vline(xintercept = 32.4, color = "darkgrey", linetype = "dotted") +
scale_x_continuous(name = "mpg",
breaks = seq(10,34,2)) +
scale_y_continuous(labels = scales::percent,
limits = c(0,1)) +
theme_bw() +
theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.text.x = element_text(face="bold", size=14),
axis.text.y = element_text(face="bold", size=12),
axis.title.x = element_text(size = 16, margin = margin(t = 20, r = 0, b = 10, l = 0)),
axis.title.y = element_text(size = 16, margin = margin(t = 0, r = 20, b = 0, l = 10)),
legend.title = element_blank(), legend.position = "none") +
ylab("Probability of vs")
reg
解决方案
推荐阅读
- python - Python - 语法无效
- c# - 从配置文件中获取设置
- nginx - 如何进行 nginx url 重写?
- swift - 有没有办法结合开关和包含?
- algorithm - 生成由c ++中整数的二进制表示给出的集合的所有子集
- ionic3 - ionic3 android构建错误:超时等待锁定
- ibm-watson - Watson Assistant - 提示所需的插槽不起作用
- django - 为什么 django inspectdb 不能在现有数据库上正确创建外键?
- java - Spring Hateoas / HAL 抛出异常
- java - 在多处理器系统中,每个处理器会有独立的 JVM 吗?