マーケティング等々に関する勉強・解説ブログ。数式は使わずイメージで説明出来るよう心掛けていますが、時々暴走します。統計Tweet今回は、前回書いた0と1の組み合わせを全て出力する関数を応用して、説明変数選択の自動化(総当たり法)を行ってみたいと思います。何言ってるか分からないと思うので初めに少し説明から入ります。使って線形回帰をするというようなことを考えます。この時、実際の分析を行うにあたって真の構造はわからないので何を説明変数とするかという説明変数選択問題が発生します。予測をするのか説明をするのかでどんな基準で変数選択をするかは変わってきて、例えばAIC基準を利用したり、lassoを使ってみたり、決定係数を見てみたり色々方法はあるわけですが(lassoを除けば)結局次のような問題が生じます。「基準は良いがそのアルゴリズムはどう組むの??全パターン試すの意外としんどくない?」そこで、普通は逐次選択法といって一定のアルゴリズムに従って逐次的に確認する方法を採用します。この逐次選択法はRではパッケージ化されていて簡単に試すことが出来ます。この方法だと全てのパターンを見ることは出来ていません。時間的なコストと精度との兼ね合いをもって、逐次的に処理をしているにすぎません。そのため、可能なら全てのパターンを見た方が良いわけです。全てのパターンを見ることを総当たり法と呼びます。前回の0と1の全パターンを出力する関数を使って、個数が説明変数の種類数と等しくなるような0と1の組み合わせを出力します。1の部分を用いる説明変数だと考えて、対応する説明変数の組み合わせで回帰を繰り返し行います。特定の基準(今回は修正済み決定係数で比較する)に従って順位付けしたものを出力します。これで総当たり法が柔軟に行えるはずです。###ここを変えれば基準を変えられるkaiki_list[[i]]=lm(y~.,data=X_trans)}return(list(kaiki_list=kaiki_list,adj.r.squared=adj_vec))}出てきたものを決定係数が小さい物から順に並べるには次のようにすれば良い。s=sentaku(X,y)#これで[[2]]に修正済み決定係数の列が出来た。order(s[[2]])){print(s[[2]][i])}これで、例えばこの説明変数を除くと急激に決定係数が減少するだとか、逆にこの説明変数はどちらでも良いなんてものが比較できたりします。11:30Rで線形回帰において総当たり法を行う関数を作成するTweet関連記事2019-12-03統計検定1級対策問題集~一様分布編~さて、意外と鬼門な一様分布に関する想定問題(及び過去問)とそ...2018-12-06C++でベクトルの内積を行う関数を書いてみた最近C++で数値計算が行えるよう練習中です。専門にする大学院生がかいてます。経済学部出身の文系です。時々趣味や日々の生活についても書きます。専門以外のことに関しては、単なる自分のアウトプットのため、不正確な記述があります。勉強友達・勉強ブロガー友達等々も募集中なので、気軽にコメントとかしてください~。読者になるプライバシーポリシープライバシーポリシーお問い合わせお問い合わせフォーム注目記事スポンサーリンクオススメ記事www.bananarian.netはてなブログをはじめよう!bananarianさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。