Gratia 包:用于绘制广义加法模型 (GAM) 的概率而不是对数赔率
Gratia package: probability instead of log odds for plotting generalized additive model (GAM)
我试图使用 gratia 包绘制逻辑 GAM 模型(因为它使用 ggplot2),但是我希望根据概率而不是对数几率绘制效果(或部分效果)。
我已经手动尝试使用概率,但我更喜欢使用 gratia 包。有没有办法专门使用包来绘制概率?
模型(我创建了一些数据):
set.seed(1)
Perf1 <- rlnorm(100)
Sex <- sample(c(rep(1, 40), rep(0, 60)))
set.seed(2)
Group <- sample(c(rep(1, 30), rep(0, 70)))
set.seed(3)
Perf2 <- rlnorm(200)
G <- sample(c(rep(1, 20), rep(0, 80)))
Age <- sample(c(rep(7, 15), rep(8, 20), rep(9, 30), rep(10, 10), rep(11, 15), rep(12, 10)))
sample_data <-data.frame(Age = Age,
Sex = Sex,
G = G,
Group = Group,
Perf1 = Perf1,
Perf2 = Perf1
)
gam_fit <- gam(Group ~ Age + Sex + G + s(Perf1, k = 20) +
s(Perf2, k = 20),
data = sample_data,
family = "binomial",
method="REML", select = F)
draw(gam_fit, parametric = T)
使用 gratia 绘图:
gam_fit
效果或部分效果在对数几率范围内,虽然我想要概率,但我不确定如何实现。
您必须添加模型常数项并通过 link 函数的反函数进行变换:
draw(gam_fit, constant = coef(gam_fit)[1], fun = inv_link(gam_fit))
(我不确定 constant
或 fun
是否适用于刚才的参数项。)
我试图使用 gratia 包绘制逻辑 GAM 模型(因为它使用 ggplot2),但是我希望根据概率而不是对数几率绘制效果(或部分效果)。
我已经手动尝试使用概率,但我更喜欢使用 gratia 包。有没有办法专门使用包来绘制概率?
模型(我创建了一些数据):
set.seed(1)
Perf1 <- rlnorm(100)
Sex <- sample(c(rep(1, 40), rep(0, 60)))
set.seed(2)
Group <- sample(c(rep(1, 30), rep(0, 70)))
set.seed(3)
Perf2 <- rlnorm(200)
G <- sample(c(rep(1, 20), rep(0, 80)))
Age <- sample(c(rep(7, 15), rep(8, 20), rep(9, 30), rep(10, 10), rep(11, 15), rep(12, 10)))
sample_data <-data.frame(Age = Age,
Sex = Sex,
G = G,
Group = Group,
Perf1 = Perf1,
Perf2 = Perf1
)
gam_fit <- gam(Group ~ Age + Sex + G + s(Perf1, k = 20) +
s(Perf2, k = 20),
data = sample_data,
family = "binomial",
method="REML", select = F)
draw(gam_fit, parametric = T)
使用 gratia 绘图:
gam_fit
效果或部分效果在对数几率范围内,虽然我想要概率,但我不确定如何实现。
您必须添加模型常数项并通过 link 函数的反函数进行变换:
draw(gam_fit, constant = coef(gam_fit)[1], fun = inv_link(gam_fit))
(我不确定 constant
或 fun
是否适用于刚才的参数项。)