mel*_*lex 5 r data-visualization confidence-interval nnet multinomial
我想绘制 R 中与该nnet::multinom()函数拟合的多项式模型的预测概率。我有对数尺度的数值预测变量。
尽管{ggeffects}应该与 兼容multinom(),但该图不会像线性模型那样显示置信区间。
我是 R 和这个社区的新手,所以如果这个问题非常基本或者缺少一些重要的东西,我很抱歉。这是一个小例子:
library(tidyverse)
library(nnet)
library(effects)
library(ggeffects)
df <- data.frame(response = c("1 Better", "1 Better", "1 Better", "2 Medium", "2 Medium", "2 Medium", "3 Worse", "3 Worse", "3 Worse"),
count = c(1000, 2000, 4000, 6000, 10000, 3000, 6000, 5000, 11000))
mod1 <- multinom(response ~ log(count), data = df)
summary(mod1)
effects::effect(mod1, term="log(count)", se=TRUE, confidence.level=.95) %>% plot() # Produces CIs.
ggeffects::ggpredict(mod1, terms = "count") %>% plot() + theme_bw() # No confidence intervals.
Run Code Online (Sandbox Code Playgroud)
如果其他人正在寻找替代方案{ggeffects},我在寻找解决方案时尝试了这些方法:
使用effects::effect(): 有效,包括置信区间,但外观不太可定制。
组合{ggeffects}和{effects}:请参阅 R Studio 社区上的这篇文章,其中将效果包中的置信区间与 ggeffects 组合起来创建绘图。我收到错误
Error in FUN(X[[i]], ...) : object 'L' not found
Run Code Online (Sandbox Code Playgroud)
但这对那个人有用。
使用{MNLpred}package 及其: 对我来说不起作用,我认为因为我的预测变量是对数尺度的。我收到以下错误: mnl_pred_ova()
Error in eval(parse(text = paste0("data$", xvari))) : attempt to apply non-function
Run Code Online (Sandbox Code Playgroud)
使用mnlAveEffPlot()来自 的函数{DAMisc}:有效,但绘图并不像我想要的那样可定制。
您可以使用 来执行此操作ggeffects::ggemmeans()。
library(tidyverse)
library(ggthemes)
library(nnet)
library(ggeffects) # package version used: v0.16.0
df <- data.frame(response = c("1 Better", "1 Better", "1 Better", "2 Medium", "2 Medium", "2 Medium", "3 Worse", "3 Worse", "3 Worse"),
count = c(1000, 2000, 4000, 6000, 10000, 3000, 6000, 5000, 11000))
mod1 <- multinom(response ~ log(count),
data = df)
ggemmeans(mod1, terms = "count") %>% plot() + ggthemes::theme_tufte()
Run Code Online (Sandbox Code Playgroud)
有关如何使用 {ggeffects} 的更多信息,您可能还需要查看包文档ggemmeans(),尤其是和等之间的差异ggpredict()(例如此处)。
{ggeffects} 包利用了 {effects} 创建的输出,但是,我相信这就是您正在寻找的,它使得使用标准 ggplot 命令自定义绘图变得更加容易。