gpt4 book ai didi

r - ggplot GLM 拟合曲线,无交互作用

转载 作者:行者123 更新时间:2023-12-03 02:23:36 25 4
gpt4 key购买 nike

我想在 ggplot 上添加 GLM 的拟合函数。默认情况下,它会自动创建带有交互的绘图。我想知道,是否可以在没有交互的情况下从模型中绘制拟合函数。例如,

dta <- read.csv("http://www.ats.ucla.edu/stat/data/poisson_sim.csv")
dta <- within(dta, {
prog <- factor(prog, levels=1:3, labels=c("General", "Academic", "Vocational"))
id <- factor(id)
})

plt <- ggplot(dta, aes(math, num_awards, col = prog)) +
geom_point(size = 2) +
geom_smooth(method = "glm", , se = F,
method.args = list(family = "poisson"))

print(plt)

给出带有交互的情节,Fig-1

但是,我想要模型中的图,

`num_awards` = ß0 + ß1*`math` + ß2*`prog` + error

我试图以这种方式得到这个,

mod <- glm(num_awards ~ math + prog, data = dta, family = "poisson")

fun.gen <- function(awd) exp(mod$coef[1] + mod$coef[2] * awd)
fun.acd <- function(awd) exp(mod$coef[1] + mod$coef[2] * awd + mod$coef[3])
fun.voc <- function(awd) exp(mod$coef[1] + mod$coef[2] * awd + mod$coef[4])

ggplot(dta, aes(math, num_awards, col = prog)) +
geom_point() +
stat_function(fun = fun.gen, col = "red") +
stat_function(fun = fun.acd, col = "green") +
stat_function(fun = fun.voc, col = "blue") +
geom_smooth(method = "glm", se = F,
method.args = list(family = "poisson"), linetype = "dashed")

输出图为Fig2

ggplot有什么简单的方法吗?有效地做到这一点?

最佳答案

Ben 绘制特定模型项的响应预测值的想法启发了我改进 sjp.glm 函数的 type = "y.pc" 选项。新的更新是on GitHub ,版本号1.9.4-3。

现在您可以绘制特定术语的预测值,其中一个沿 x 轴使用,第二个用作分组因子:

sjp.glm(mod, type = "y.pc", vars = c("math", "prog"))

它给出了以下情节:

enter image description here

如果您的模型有两个以上项,则需要 vars 参数来指定 x 轴范围的项和分组的项。

您还可以对组进行分面:

sjp.glm(mod, type = "y.pc", vars = c("math", "prog"), show.ci = T, facet.grid = T)

enter image description here

关于r - ggplot GLM 拟合曲线,无交互作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36459967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com