6

ベクトルのデータセットの各列を回帰させ、R-2 乗値が最も高い列を返したいと考えています。たとえば、ベクトル 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

左側のデータセットの各列で "Happy" を回帰し、R-2 乗が最も高い列を返します。例: lm(Health ~ Happy) Health の R-squared 値が最大の場合、Health を返します。

適用しようとしましたが、最大の R 二乗で回帰を返す方法がわかりません。助言がありますか?

4

3 に答える 3

5

これを2つのステップに分割します。

1)各モデルのR-squareを決定します

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))])

これは、それhappyがdata.frameにあると想定していました。

于 2012-04-20T07:22:59.680 に答える
4

data.frame が「d」と呼ばれると仮定すると、これはあなたが望むことを行います

r2s <- apply(d, 2, function(x) summary(lm(x ~ HAPPY))$r.squared)
names(d)[which.max(r2s)]

str() コマンドを使用して、モデルのコンポーネント (この場合はモデルの概要) を抽出する方法を見つけることができます。複雑なオブジェクトのコンポーネントにアクセスするのに役立つ読み取りを提供します。

于 2012-04-20T07:19:50.240 に答える