【问题标题】:Custom plots using the effects package使用效果包的自定义绘图
【发布时间】:2013-07-13 14:16:06
【问题描述】:

我尝试从效果包中自定义多线图。

是否可以将下例中的图例放置在绘图区域内而不是图形上方?

或者:有谁知道如何绘制效果包使用 ggplot2 计算的多线回归结果?

感谢您的帮助。

安迪

示例:

library(effects)
data(Prestige)
mod5 <- lm(prestige ~ income*type + education, data=Prestige)
eff_cf <- effect("income*type", mod5)
print(plot(eff_cf, multiline=TRUE))

【问题讨论】:

  • 你能像在效果包中那样显示示例数据吗?
  • 感谢您的回复,我用一个例子更新了我的问题

标签: r ggplot2 regression


【解决方案1】:

这就是你在 ggplot 中绘制效果对象的方式

library(ggplot2)

## Change effect object to dataframe
eff_df <- data.frame(eff_cf)

## Plot ggplot with legend on the bottom
ggplot(eff_df)+geom_line(aes(income,fit,linetype=type))+theme_bw()+
  xlab("Income")+ylab("Prestige")+coord_cartesian(xlim=c(0,25000),ylim=c(30,110))+
  theme(legend.position="bottom")

您可以更改xlimylim,具体取决于您希望如何显示数据。

输出如下:

【讨论】:

  • 这里只是一个额外的问题 - 您如何最优雅地在此处添加 95% 置信限或 95% 预测带,例如以三种不同颜色显示 3 组(使用实线和虚线),也许还有不同颜色的实际数据点?效果包中没有选项可以同时显示实际数据点?
【解决方案2】:

来自?xyplot你读到:

或者,可以通过以下方式将键定位在绘图区域内 指定组件xy 和角。 xy 确定位置 由corner给出的键的角,通常是其中之一 c(0,0)c(1,0)c(1,1)c(0,1),表示 单位平方。

?plot.eff你读到

key.args 要传递给键格的附加参数 xyplot 或 densityplot 的参数,例如,定位键(图例) 在绘图区域。

例如,您可以执行以下操作:

plot(eff_cf, multiline=TRUE,    
     key.args=list(x=0.2,y=0.9,corner=c(x=1, y=1)))

【讨论】:

    【解决方案3】:

    @Tom Wenseleers

    为此,您可以使用 sjPlot::sjp.inttype='eff'

    但是,它不会为您提供地毯图,也没有原始数据点。

    mod5 <- lm(prestige ~ type * income + education, data=Prestige)
    library(sjPlot)
    sjp.int(mod5,showCI = T, type = 'eff')
    

    effect() 函数有一个参数 partial.residuals = T。 这将为您提供拟合值,partial.residuals.raw 和 partial.residuals.adjusted。 我想您可以将这些数据合并到原始数据集上,然后按组绘制平滑图,但我在早期遇到了一些困难(例如 na.action=na.exclude 不受尊重)。

    【讨论】:

      【解决方案4】:

      基于Ruben的答案,您可以尝试以下:

      library(sjPlot)
      sjp.int(mod5, type = "eff", swapPredictors = T)
      

      将重现ggplot的绘图,sjp.int还返回绘图对象以进一步自定义。但是,您还可以使用sjplot-package设置某些传奇参数:

      sjp.setTheme(legend.pos = "bottom right", 
                   legend.inside = T)
      sjp.int(mod5, type = "eff", swapPredictors = T)
      

      它会在绘制句子之后:

      参见sjPlot-manual @用于如何自定义绘图外观和传奇位置/大小等。

      为了绘制模型的估计,或所有模型术语的边际效果,请参阅sjplot-package中的?sjp.lm,或者您甚至可能会尝试我的包装中的最新功能from GitHub。 p >

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-20
        • 2014-09-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-01
        • 2022-01-20
        相关资源
        最近更新 更多