【发布时间】:2015-04-17 13:32:10
【问题描述】:
我有一个大数据框。 这是类似结构的假数据;
dat = data.frame(id=seq(1:12),variable=rep(c("p1","p2","p3"),times=2),value=c(runif(6),runif(6)+1),locus=c(rep("A",6),rep("B",6)),replicate=rep(c(1,2),6), TimesLocus=rep(2,times=12))
我想绘制重复 1 和重复 2 之间的相关性。
我已经做到了这一点。
Corr<-cor(dat[dat$replicate==1,]$value,dat[dat$replicate==2,]$value)
ggplot(dat,aes(x=dat[dat$replicate==1,]$value,y=dat[dat$replicate==2,]$value))+
geom_point()+xlab("replicate1")+ylab("replicate2")+
geom_smooth(method = "lm") +
annotate("text", x = 0.9*max(dat[dat$replicate==1,]$value),
y = 0.9*max(dat[dat$replicate==2,]$value),
label = paste("r^2=",round(Corr,digits=2),sep=" "),color="blue")
但是,现在我想看看每个变量的相关性是否不同。
我可以这样做。
ggplot(dat,aes(x=dat[dat$replicate==1,]$value,y=dat[dat$replicate==2,]$value))+
geom_point()+xlab("replicate1")+ylab("replicate2")+
geom_smooth(method = "lm") + facet_wrap(~variable)
如果我想获得每个变量的相关性,我知道我应该制作一个单独的数据框,但我遇到了问题。
r_df <- ddply(dat, .(variable), summarise,
rsq=round(summary(lm(dat[dat$replicate==2,]$value~
dat[dat$replicate==1,]$value))$r.squared, 2))
它为每个变量提供相同的 r2ed。
我做错了什么?我可以在不重新调整数据的情况下执行此操作吗?
好的,我现在正在尝试使用来自 @shadow 的信息,并获得以下信息。
r_df_val <- ddply(df_mlt_loc_Dup, .(variable), summarise, rsq=round(summary(lm(value[replicate==2]~value[replicate==1]))$r.squared, 2))
有些计算不正确。所有的 rsq 都是 0.06 左右,当它们应该接近 0.8 时,您可以在下图中看到相关性。它是否在通过变量进行子集化时以某种方式重新排序数据帧?
【问题讨论】: