我尝试从效果包中自定义多线图。
无论如何,在绘图区域内而不是图形上方的下面的示例中定位图例?
或者:有没有人知道如何使用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))
答案 0 :(得分:3)
这是你在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")
您可以更改xlim
和ylim
,具体取决于您希望如何显示数据。
输出如下:
答案 1 :(得分:3)
从?xyplot
开始阅读:
或者,可以将键放置在绘图区域内 指定组件
x
,y
和角落。x
和y
确定位置 角落给角落的角落,通常是角落之一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)))
答案 2 :(得分:3)
根据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中的最新功能
答案 3 :(得分:1)
@Tom Wenseleers
您可以将sjPlot::sjp.int
与type='eff'
一起使用。
但是,它不会给你地毯图,也没有原始数据点。
mod5 <- lm(prestige ~ type * income + education, data=Prestige)
library(sjPlot)
sjp.int(mod5,showCI = T, type = 'eff')
partial.residuals = T
函数有一个参数effect()
。
这为您提供了拟合值,partial.residuals.raw和partial.residuals.adjusted。
我想你可以将这些数据合并到原始数据集上,然后按组绘制平滑图,但我在早期遇到了一些困难(例如na.action=na.exclude
没有得到尊重)。