如何在R中进行ANCOVA

时间:2015-10-29 08:40:09

标签: r statistics

我有一个样本图而不是数字Item details

红点用红色回归线建模,蓝点用蓝色回归线建模。我想比较两个回归斜率,看看它们是否有显着差异。我相信这是通过ANCOVA完成的。有谁知道如何在R中实现这个?

执行图表的数据如下:

ggplot(FeqAndASCATmergeCell) +
  geom_bar(aes(code,Cellul*100),stat="identity")+
  geom_point(aes(code,freq),colour="blue")+
  geom_smooth(aes(code,freq,group=2),fill = "blue",alpha=0.2)+
  geom_point(aes(code,CNI*20),colour="red",size=5)+
  geom_smooth(aes(code,CNI*20,group=2),fill = "red", colour="red", alpha=0.2)+
  theme(axis.text=element_text(size=14)) +
  theme(axis.title=element_text(size=14))+
  theme(legend.title=element_blank())+
  theme(legend.position = c(0.7, 0.7))+
  theme(axis.text.x=element_text(angle=-90))+
  scale_y_continuous(breaks=c(25, 50,75, 100,300,600,900))+
  theme(axis.text.y=element_text( size=10)) +
  theme(legend.position = "none")+
  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(), panel.background = element_blank(), axis.line = element_line(colour = "black")) +
  theme(plot.title = element_text(size=18,lineheight=.8, face="bold",vjust=1))+
  theme(axis.text.x=element_text(angle=-90, size=10)) 

以下是图表的代码

{{1}}

1 个答案:

答案 0 :(得分:1)

您可以将回归线与ANCOVA的斜率进行比较,但对于直线则可以,因此具有恒定的斜率。因为您没有向geom_smooth提供方法,所以它使用loess并且您的线路不具有恒定的斜率。例如,您可以使用method = lm

ggplot(FeqAndASCATmergeCell) +
  geom_point(aes(code,freq),colour="blue")+
  geom_smooth(aes(code,freq,group=2),fill = "blue",alpha=0.2, method="lm")+
  geom_point(aes(code,CNI*20),colour="red",size=5)+
  geom_smooth(aes(code,CNI*20,group=2),fill = "red", colour="red", alpha=0.2, method="lm")+
  theme(axis.text=element_text(size=14)) +
  theme(axis.title=element_text(size=14))+
  theme(legend.title=element_blank())+
  theme(legend.position = c(0.7, 0.7))+
  theme(axis.text.x=element_text(angle=-90))+
  scale_y_continuous(breaks=c(25, 50,75, 100,300,600,900))+
  theme(axis.text.y=element_text( size=10)) +
  theme(legend.position = "none")+
  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(), panel.background = element_blank(), axis.line = element_line(colour = "black")) +
  theme(plot.title = element_text(size=18,lineheight=.8, face="bold",vjust=1))+
  theme(axis.text.x=element_text(angle=-90, size=10)) 

这会给你直线: enter image description here

接下来,您可以使用ANCOVA来测试这些线是否不同。基本上,您测试线的斜率或截距是否显着不同。如何做到这一点会得到太长的答案,但请参阅here获取R示例。