r - 将 ggpredict() 和 ggplot2() 与缩放的连续变量一起使用并尝试取消缩放它

我正在尝试 plot marginal-effects对于具有二项式 Logit 链接函数的混合模型。

我的问题是我最初使用缩放的连续变量运行模型,然后我在 ggpredict() 函数中使用它。

但是,当我尝试绘制边际效应时,边际效应的 x 轴使用缩放变量,我想用原始的连续未缩放数据绘制它。从而使其更具可解释性。

我不确定该怎么做。我附上了一个最小的可重现示例。

    #data
    dat <- data.frame(age = seq(1,5, by = 1),
                      sex = as.factor(c("M", "F")),
                      cluster = runif(20, min=0, max=100),
                      household = runif(50, min=0, max=100),
                      temp = runif(100, min=0, max=100),
                      prec = runif(100, min=0, max=100),
                      hum = runif(100, min=0, max=100),
                      disease = c(1,0))

    #scale continuous variables
    pvars <- c("temp", "prec", "hum")
    datsc <- dat
    datsc[pvars] <- lapply(datsc[pvars],scale)

    #setting the control to run faster

    contr1 <- glmerControl(optimizer = "nloptwrap", calc.derivs = FALSE)

    #run glmer model


    model1 <- glmer(disease ~  hum + temp + prec +  (1|cluster/household), 
                               family = binomial("logit"), 
                               data = datsc, control = contr1) 

    modelsummary<- summary(model1)

    #calculate marginal effects

    humidity <- data.frame(ggpredict(model1, term = "hum [all]", type = "fe"))

    humidity_plot <- ggplot(data=humidity, aes(x=x, y=predicted)) + 
      geom_line(size = 1) +
      geom_ribbon(aes(ymin=conf.low, ymax=conf.high, fill = group), linetype=2, alpha=0.1) +
      scale_y_continuous(limits = c(0, 1), breaks = c(seq(0,1, by = 0.2))) + 
      xlab("Humidity") + 
      ylab("Probability of Disease") + theme_classic()

任何帮助将不胜感激。

最佳答案

在通过 ggpredict() 创建预测边际效应数据帧后,向数据帧添加一个新变量,即 x 值的未缩放版本,然后将未缩放变量指定为 ggplot 中的 x。

humidity <- data.frame(ggpredict(model1, term = "hum [all]", type = "fe"))

humidity$hum_unscaled <- humidity$x*sd(dat$hum) + mean(dat$hum)

humidity_plot <- ggplot(data=humidity, aes(x=hum_unscaled), y=predicted)) + 
  geom_line(size = 1) +
  geom_ribbon(aes(ymin=conf.low, ymax=conf.high, fill = group), linetype=2, alpha=0.1) +
  scale_y_continuous(limits = c(0, 1), breaks = c(seq(0,1, by = 0.2))) + 
  xlab("Humidity") + 
  ylab("Probability of Disease") + theme_classic()

关于r - 将 ggpredict() 和 ggplot2() 与缩放的连续变量一起使用并尝试取消缩放它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60955613/

相关文章:

java - 删除后 Netty SslHandler 握手超时

python - 计数没有。使用 dask 的大型 Parquet 文件中的行数没有内存错误

python-3.x - Python 3.8 将 "open"视为导入的 openpyxl 方法而

python - Flask App 进行多次登录尝试的奇怪行为

emacs - 如何将ctags格式文件转换为etags格式文件?

perl - 为什么我的 perl Catalyst redirect_and_detach 替换插

php - 实时服务器上的 Laravel Coinbase API Http 异常错误但适用于 X

javascript - mxgraph 避免边缘重叠节点或其他边缘

oracle - 无法使用 confluent CLI : java. sql.SQLExcepti

maven - Visual Studio Code 终端无法使用代理