我想回归矢量数据集中的每一列,然后返回具有最高R平方值的列.例如,我有一个矢量HAPPY < - (3,2,2,3,1,3,1,3),我有一个数据集.
HEALTH CONINC MARITAL SATJOB1 MARITAL2 HAPPY
3 441 5 1 2 3
1 1764 5 1 2 2
2 3087 5 1 2 2
3 3087 5 1 2 3
1 3969 2 1 5 1
1 3969 5 1 2 3
2 4852 5 1 2 2
3 5734 3 1 3 3
Run Code Online (Sandbox Code Playgroud)
在左侧数据集的每一列上回归"Happy",然后返回具有最高R平方的列.示例:lm(Health~Happy)如果Health具有最高的R平方值,则返回Health.
我试过申请,但似乎无法弄清楚如何以最高的R平方返回回归.有什么建议?
我会把它分成两步:
1)确定每个模型的R平方
2)确定哪个是最高值
mydf<-data.frame(aa=rpois(8,4),bb=rpois(8,2),cc=rbinom(8,1,.5),
happy=c(3,2,2,3,1,3,1,3))
myRes<-sapply(mydf[-ncol(mydf)],function(x){
mylm<-lm(x~mydf$happy)
theR2<-summary(mylm)$r.squared
return(theR2)
})
names(myRes[which(myRes==max(myRes))])
Run Code Online (Sandbox Code Playgroud)
这假设happy在您的data.frame中.
假设您的 data.frame 名为“d”,这将执行您想要的操作
r2s <- apply(d, 2, function(x) summary(lm(x ~ HAPPY))$r.squared)
names(d)[which.max(r2s)]
Run Code Online (Sandbox Code Playgroud)
您可以使用 str() 命令了解如何提取模型的组件,或者在本例中提取模型的摘要。它将为您提供读数,帮助您访问任何复杂对象的组件。