我有一个X-Y表,希望找到所有行的R ^ 2值,然后减去一行并再次执行该功能。 我已经开始使用这个功能了:
df<-data.frame(x=1:10,y=1:10)
R2<-function(df)
for(i in length(df$x)){
Rsq<-lm(x ~ y, data=df)
print(Rsq)
}
所以这给了我整个数据帧的R ^ 2,我似乎无法通过每次减去一行来计算出如何连续执行该函数。
答案 0 :(得分:3)
假设想要的是找到y [-1]对x [-2],y [-2]对x [-2]等的R平方。
sapply(1:nrow(df), function(i) summary(lm(y ~ x, df, subset = -i))$r.squared)
请注意,我们可以通过在上面的代码中将r.squared
替换为adj.r.squared
来获得调整后的R平方。
如果你真的想编写一个连续打印R平方值的循环,那么就可以这样做:
R2 <- function(df) {
for(i in 1:nrow(df)) {
Rsq <- summary(lm(x ~ y, data = df, subset = -i))$r.squared
print(Rsq)
}
}
R2(df)