在R中的向量上的数据框中回归每列

bst*_*ton 6 statistics r

我想回归矢量数据集中的每一列,然后返回具有最高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平方返回回归.有什么建议?

Ben*_*nes 5

我会把它分成两步:

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中.


Joh*_*ohn 4

假设您的 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() 命令了解如何提取模型的组件,或者在本例中提取模型的摘要。它将为您提供读数,帮助您访问任何复杂对象的组件。