R:在DV上绘制分类因子和连续变量之间的交互

时间:2014-01-28 11:45:31

标签: r plot ggplot2

我所拥有的是3级重复测量因子和连续变量(心理问卷中的得分,仅在实验前测量,NEO),其在具有因变量的线性混合效应模型中显示出显着的相互作用( DV;在每个时间级别测量的状态分数,IAS)。

为了了解这种相互作用的本质,我想创建一个在X轴上的时间水平,在Y轴上的状态分数和连续变量的多条曲线的图,类似于this。连续变量应该分类,比如四分位数(所以我得到4条不同的曲线),这正是我无法实现的。到目前为止,我为连续变量中的每个值得到一条单独的曲线。

我的目标也与this相当,但我需要将分类(时间)变量作为单独的曲线而不是X轴。

我在R中尝试了很多不同的情节功能但是没有设法得到我想要的东西,也许是因为我不太熟练地处理R。

F。即

gplot(Data_long, aes(x = time, y = IAS, colour = NEO, group = NEO)) + 
  geom_line()

从第一个链接显示了几十条曲线(测量NEO中每个值一条曲线),我找不到如何在gplot函数中以有意义的方式对连续变量进行分组。

编辑:

原始数据:

http://www.pastebin.ca/2598926

(我希望它不会太不方便。)

使用以下行创建/转换此对象(Data_long):

Data_long <- transform(Data_long0, neo.binned=cut(NEO,c(25,38,46,55,73),labels=c(".25",".50",".75","1.00")))

neo.binned列中的每个值似乎都设置正确,每个分位数都有足够的个案。

然后我尝试了什么并且没有工作:

ggplot(Data_long, aes(x = time, y = ias, color = neo.binned)) + stat_summary(fun.y="median",geom="line")
  

geom_path:每组只包含一个观察。你需要调整组&gt;审美吗?

我得到了92个科目,其中NEO在26-73之间。有什么提示输入切割和标签功能?分位数为0%25%50%75%100%26 38 46 55 73。

2 个答案:

答案 0 :(得分:1)

你是说这样的意思吗?在这里,您的数据根据​​NEO分为三类,然后绘制IAS在这些分档上的中位数。查看?cut

Data_long <- transform(Data_long, neo.binned=cut(NEO,c(0,3,7,10),labels=c("lo","med","hi")))

将所有内容绘制在一个图中。

ggplot(Data_long, aes(x = time, y = IAS, color = neo.binned)) 
  + stat_summary(aes(group=neo.binned),fun.y="median",geom="line")

enter image description here 从CMichael的回答中窃取你可以在多个方面做到这一切(不知怎的,你在你的问题中与刻面图有关):

ggplot(Data_long,aes(x=time,y=IAS)) 
  + stat_summary(fun.y="median",geom="line") 
  + facet_grid(neo.binned ~ .)

enter image description here

答案 1 :(得分:0)

你的意思是面对@ziggystar的初始情节吗?

quantiles = quantile(Data_long$NEO,c(0.25,0.5,0.75))

Data_long$NEOQuantile = ifelse(Data_long$NEO<=quantiles[1],"first NEO Quantile",
                               ifelse(Data_long$NEO<=quantiles[2],
                                      "second NEO Quantile",
                                      ifelse(Data_long$NEO<=quantiles[3],
                                             "third NEO Quantile","forth NEO Quantile")))

require(ggplot2)
p = ggplot(Data_long,aes(x=time,y=IAS)) + stat_quantile(quantiles=c(1),formula=y ~ x)
p = p + facet_grid(.~NEOQuantile)
p

enter image description here