PLSなどで、分散0の説明変数を取り除く
PLSなどの統計解析手法は、多重共線性を考慮しなくてよいので、説明変数の取捨選択をしなくてよいのが強みです。(取捨選択した方が結果が改善される場合もありますが)
しかしRでPLSを行う時には、分散0のデータ(例えば全てのサンプルにおいてデータの値が1の説明変数)はあらかじめ取り除く必要があります。
そこで簡単にそのようなデータを取り除けないかな?と考えたら、意外と1行で取り除くことができました。
データhogeに縦方向にサンプル、横方向に説明変数として、データが入ってる場合、apply(hoge,2,var)で説明変数ごとの分散を求めています。
そしてapply(hoge,2,var)!=0で分散が0でないものを選択します。その後、そのデータに対してPLSやPCAを行えばOKです。
データhogeに横方向にサンプル、縦方向に説明変数と逆に入ってる場合は、apply(hoge,1,var)とすれば同じことができます。
公開日:4月22日
しかしRでPLSを行う時には、分散0のデータ(例えば全てのサンプルにおいてデータの値が1の説明変数)はあらかじめ取り除く必要があります。
そこで簡単にそのようなデータを取り除けないかな?と考えたら、意外と1行で取り除くことができました。
piyo <- hoge[,apply(hoge,2,var) != 0]
piyo_pls <- plsr(y ~ ., 10, data = piyo, validation = "CV")
データhogeに縦方向にサンプル、横方向に説明変数として、データが入ってる場合、apply(hoge,2,var)で説明変数ごとの分散を求めています。
そしてapply(hoge,2,var)!=0で分散が0でないものを選択します。その後、そのデータに対してPLSやPCAを行えばOKです。
データhogeに横方向にサンプル、縦方向に説明変数と逆に入ってる場合は、apply(hoge,1,var)とすれば同じことができます。
公開日:4月22日