R 具有多个虚拟编码预测器的线性回归模型的箱线图
我有以下线性模型:R 具有多个虚拟编码预测器的线性回归模型的箱线图,r,ggplot2,linear-regression,R,Ggplot2,Linear Regression,我有以下线性模型: model <- lm(var01 ~ a0 + a1 + a2 + a3 + a4 + a5,NT) 我想创建一个方框图,其中a0-a5彼此相邻显示,但仅在a0==1、a1==1等情况下显示 所以我试着: ggplot(NT, aes(factor(a0), var01)) + geom_boxplot() + geom_smooth(method = "lm", se=FALSE, color="black", aes(group=1)) 但这显示了a0
model <- lm(var01 ~ a0 + a1 + a2 + a3 + a4 + a5,NT)
我想创建一个方框图,其中a0-a5彼此相邻显示,但仅在a0==1、a1==1等情况下显示
所以我试着:
ggplot(NT, aes(factor(a0), var01)) +
geom_boxplot() +
geom_smooth(method = "lm", se=FALSE, color="black", aes(group=1))
但这显示了a0==0和a0==1的箱线图相邻。所以有两个问题:如何让R只显示a0==1?此外,在同一张图中,a0旁边的所有四个其他预测值a1-a5(但也限于a1-a4==1)
非常感谢你的帮助。谢谢:)
更新:样本数据
id category_a var01 a0 a1 a2 a3 a4 a5
3 1;5 100 0 1 0 0 0 1
4 1;5 0 0 1 0 0 0 1
5 0 21 1 0 0 0 0 0
6 1;2;4 100 0 1 1 0 1 0
9 1;2 68 0 1 1 0 0 0
因此a0-a5是多类别变量“category_a”的虚拟编码。这是一个数据重塑的问题。如果您感兴趣的每个数据点是数据帧(长格式)中的一行,则ggplot工作得最好
库(ggplot2)
图书馆(E2)
#生成数据
种子(1)
n=1000
NT是a0-a5不同的变量,或者它们是同一个分类变量的假人?如果你提供一些数据会有所帮助……我添加了一些样本数据。希望这更清楚:)效果很好!非常感谢你!我试了几个小时,这让我发疯。还有一个小问题:有没有一种快速的方法来重新命名箱线图的标签?(a0-a5)您可以添加一个新的比例x离散或更改因子的标签
id category_a var01 a0 a1 a2 a3 a4 a5
3 1;5 100 0 1 0 0 0 1
4 1;5 0 0 1 0 0 0 1
5 0 21 1 0 0 0 0 0
6 1;2;4 100 0 1 1 0 1 0
9 1;2 68 0 1 1 0 0 0
library(ggplot2)
library(reshape2)
#generate data
set.seed(1)
n=1000
NT <- data.frame(id=1:n,
var01=rnorm(n),
a0=rbinom(n,1,0.2),
a1=rbinom(n,1,0.2),
a2=rbinom(n,1,0.2),
a3=rbinom(n,1,0.2),
a4=rbinom(n,1,0.2),
a5=rbinom(n,1,0.2))
#do some data-reshaping before plotting
#ggplot needs each data-point on one line
#so transform to long
plotdata <- melt(NT,id.vars=c("id","var01"),variable.name="a")
#plot everything using interaction
p1 <- ggplot(plotdata, aes(x=interaction(a,value), y=var01)) +
geom_boxplot()
p1
p2 <- ggplot(plotdata[plotdata$value==1,],
aes(x=a, y=var01)) +
geom_boxplot()
p2