我想知道如何在循环函数(或plyr包中的任何函数)中分别计算x
和每个y1,y2,y3
之间的回归线,并将所有结果带入新数据。帧。 2.如何绘制x和每个y (y1,y2,y3)
subject<-seq(1,21,1)
x<-seq(10,30,1)
y1<-seq(15,35,1)
y2<-seq(20,40,1)
y3<-seq(50,70,1)
a<-data.frame(subject,x,y1,y2,y3)
答案 0 :(得分:0)
最终确定您想要具有哪些结果。现在我只是保存拦截和斜率。
results <- data.frame()
for (i in colnames(a)[! colnames(a) %in% c('subject','x')]) {
results <- rbind(results,coefficients(lm(x ~ get(i), a)))
}
colnames(results) <- c('intercept','slope')
results
注意:在R中截距不是你通常认为的截距。通常,截距是y,其中x = 0。在R中,它是x,其中y = 0。
对于绘图,首先需要计算出y的最大值和最小值,以便设置绘图区域。
min_y <- min(a$y1,a$y2,a$y3)
max_y <- max(a$y1,a$y2,a$y3)
plot(x, y1, ylim = c(min_y, max_y))
points(x, y2, yaxt = 'n', ylab = '')
points(x, y3, yaxt = 'n', ylab = '')