差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
mselab:2012:stat:week2 [2012/10/23 10:09] watalumselab:2012:stat:week2 [不明な日付] (現在) – 外部編集 (不明な日付) 127.0.0.1
行 1: 行 1:
 === 概要 === === 概要 ===
  
-今週は+今週の実験の内容
  
-  * (「多変量解析」で学んだ人もいると思われる)回帰分析を用いたデータマイニング+  * 回帰分析を用いたデータマイニング
  
-が内容で、そのために+ある。3週間の流れがデータ分析(第1週)を行って、回帰分析によるモデル構築(第2週)、そして第3週他の手法を用いたモデル構築へと繋がるため、今週は[[http://kyoumu.office.uec.ac.jp/syllabus/2012/21/21_17123216.html|多変量解析]]との内容の重複を避けずおいた。また同科目の履修を前提としていないため、回帰分析の学習も自習内容として含めてある。
  
-  * Rコマンダーを用いた回帰分析の2つの課題(準備、練習に相当)+  * Rコマンダーを用いた回帰分析の2つの課題(自習、練習に相当)
   * 解析データを用いた1つの課題(本番)   * 解析データを用いた1つの課題(本番)
  
 に取り組んで貰う。 に取り組んで貰う。
 +
 +=== 実験の流れ ===
 +
 +  - 配付資料とRコマンダーを照らし合わせながら、出力される情報のどれが配付資料のどれに対応するのかを把握する
 +    * 回帰係数の推定値: Estimate
 +      * 切片: Intercept
 +    * 寄与率: R-Squared
 +    * 自由度調整済み寄与率
 +    * てこ比
 +    * 標準化残差
 +    * 変数増減法
 +  - 保険データの回帰分析、に取り組む (保険データの回帰分析)
 +    - 回帰係数の推定
 +    - 分散分析によるモデルの有意性の検討や回帰係数の有意性の検討
 +    - てこ比や標準化残差などの検討
 +    - 変数の増減
 +    - 以上を繰り返す
 +  - 回帰分析の結果に基づいて、訪問する顧客層を絞り込む (訪問ルールの作成)
 +  - 必要に応じて、保険データの回帰分析と訪問ルールの作成を繰り返す
 +
 +
 +
 === データの説明 === === データの説明 ===
 == TIC2000 == == TIC2000 ==
行 167: 行 189:
  
   * TICデータは、V65からV85までが21種類の保険商品の契約件数である。実験ペアのどちらかの学籍番号の末尾1桁を用いて、分析対象とする保険商品を決めよ。   * TICデータは、V65からV85までが21種類の保険商品の契約件数である。実験ペアのどちらかの学籍番号の末尾1桁を用いて、分析対象とする保険商品を決めよ。
 +
 |学籍番号の末尾1桁|解析する保険商品| |学籍番号の末尾1桁|解析する保険商品|
 |0|V75| |0|V75|
行 178: 行 201:
 |8|V83| |8|V83|
 |9|V84| |9|V84|
 +
   * 重回帰分析を行い、分析結果を考察せよ。   * 重回帰分析を行い、分析結果を考察せよ。
   * 重回帰分析の結果を用いて、指定された保険商品の契約に関する予測式を構築せよ。   * 重回帰分析の結果を用いて、指定された保険商品の契約に関する予測式を構築せよ。
行 190: 行 214:
 </code> </code>
  
-データを読み込む+1つ目のデータは、Rに次の命令実行させておく 
 +<code> 
 +x <- c(2.2,4.1,5.5,1.9,3.4,2.6,4.2,3.7,4.9,3.2) 
 +y <- c(71,81,86,72,77,73,80,81,85,74) 
 +data.1 <- data.frame(x=x,y=y) 
 +rm(x,y) 
 +</code>
  
 +2つ目のデータは、Rに次の命令を実行させておく。
 <code> <code>
-tic.leaan <- read.table("http://kdd.ics.uci.edu/databases/tic/ticdata2000.txt")+x1 <- c(51,38,57,51,53,77,63,69,72,73) 
 +x2 <- c(16,4,16,11,4,22,5,5,2,1) 
 +y <- c(3.0,3.2,3.3,3.9,4.4,4.5,4.5,5.4,5.4,6.0) 
 +data.2 <- data.frame(x1=x1,x2=x2,y=y) 
 +rm(x1,x2,y) 
 +</code> 
 + 
 +演習で用いる保険データは、Rに次の命令を実行させておく。 
 +<code> 
 +Sys.setenv("http_proxy"="http://130.153.8.66:8080/"
 +tic.learn <- read.table("http://kdd.ics.uci.edu/databases/tic/ticdata2000.txt")
 tic.eval <- read.table("http://kdd.ics.uci.edu/databases/tic/ticeval2000.txt") tic.eval <- read.table("http://kdd.ics.uci.edu/databases/tic/ticeval2000.txt")
 tic.test <- read.table("http://kdd.ics.uci.edu/databases/tic/tictgts2000.txt") tic.test <- read.table("http://kdd.ics.uci.edu/databases/tic/tictgts2000.txt")
行 201: 行 242:
 </code> </code>
  
-あとはRコマンダーで、回帰分析を進める。+あとはRコマンダーで、data.1、data.2、tic.learnそれぞれについて、回帰分析を進める。
  
 <code> <code>
 library(Rcmdr) library(Rcmdr)
 </code> </code>
 +
 +=== Rコマンダーで回帰分析をする際に用いるメニュー ===
 +
 +Rコマンダーでの回帰分析の手順は、次の通り。
 +
 +<code>
 +[統計量] -> [モデルへの適合]
 +[モデル] -> [モデルを要約]
 +[モデル] -> [逐次モデル選択]
 +[モデル] -> [部分モデル選択]
 +[モデル] -> [仮説検定] -> [分散分析]
 +[モデル] -> [グラフ] -> [基本的診断プロット]
 +[モデル] -> [グラフ] -> [影響プロット]
 +</code>
 +
 +この手順で分析を進めながら、参考資料の解析ストーリーと対比させよ。
 +「モデル選択」は、添付の資料に従うなら、変数増減法だが、その他のことも考えてよいし、
 +必ずしも選択されたモデルが最適であることもないので、少し変えても構わない。
 +=== レポート ===
 +
 +レポート提出要領:下記「XXXXXXX」は各自の学籍番号(半角文字)で置き換えること
 +
 +^項目^指定^
 +|提出期限|実験実施の翌週の火曜日の午前10時30分まで|
 +|提出方法|電子メールに添付 (宛先は配付資料に記載)|
 +|ファイル形式|Wordファイル (LaTeXで作成する場合は、dvipdfmxでPDFに変換すること)|
 +|メールの件名|統計工学実験2レポート提出(XXXXXXX)|
 +|レポートファイルの名称|統計工学実験2_XXXXXXX.doc あるいは 統計工学実験2_XXXXXXX.docx|
 +|提出部数|レポートは各自1通ずつ。{{:mselab:report-header-2012.doc|レポートの表紙}}に、共同実験者の学籍番号と氏名を記すこと。|
 +
 +=== 参考文献 ===
 +
 +  * 永田・棟近 (2001) [[http://www.saiensu.co.jp/?page=book_details&ISBN=ISBN978-4-7819-0980-6&YEAR=2001|多変量解析法入門]], サイエンス社
 +
 +=== サポート欄 ===
 +
 +  * data.2のyがひとつ足りなかったのを、追加しました。(1122a)
 +  * tic.learnというデータ名をtic.leaanとミスタイプしていたのを修正しました。(1122a)
 +  * インターネットに繋がらないパソコンを使っている人は、TAさんから次の2つのファイルを貰ってください。(1122a)
 +    * このWikiページのPDFファイル
 +    * ticdata2000.txt
 +  * 回帰分析の結果から標準化残差とテコ比の散布図を描くとき、配布資料では残差を標準化するのに、「残差の平方和を残差の自由度で割ったもの」を誤差分散の推定値としますが、Rでは「残差の標本分散」を誤差分散の推定値としています。第5章の例題では、それぞれ「残差平方和/7」と「残差平方和/9」ですので、Rが描く標準化残差のグラフはすべて、配布資料よりも9/7だけ原点から拡大されることになります。(0211p)
 +  * V1は使わないのがおすすめ。番号の順序に意味がなく、各コードごとの頻度を集計させると、次のようになるため。(0237p) <code>
 +> table(tic.learn$V1)
 +  1                  10  11  12  13  15  16  17  18  19  20 
 +124  82 249  52  45 119  44 339 278 165 153 111 179    16    19    25 
 + 21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39 
 + 15  98 251 180  82  48  50  25  86 118 205 141 810 182 214 225 132 339 328 
 + 40  41 
 + 71 205 
 +</code>
 +  * 保険商品ごとに難易度が異なります。V86が一番簡単。
 +
 +|V|0|1|2|3|4|5|6|
 +|V75|5426|382|14| | | | |
 +|V76|5529|173|100|11|8|1| |
 +|V77|5791|31| | | | | |
 +|V78|5784|38| | | | | |
 +|V79|5799|19|4| | | | |
 +|V80|2666|3017|126|7|3|2|1|
 +|V81|5819|3| | | | | |
 +|V82|5789|31|2| | | | | 
 +|V83|5675|111|34|2| | | |
 +|V84|5777|44|1| | | | |
  
 === 参考 === === 参考 ===
行 230: 行 335:
  
 <code> <code>
-(tic.eval$V47>5.5 & tic.eval$V44<1) | (tic.eval$V47>5.5 & (tic.eval$V1==1 |tic.eval$V1==3 | tic.eval$V1==6 | tic.eval$V1==8 | tic.eval$V1==12 | tic.eval$V1==20) ) +(tic.learn$V47>5.5 & tic.learn$V44<1) | (tic.learn$V47>5.5 & (tic.learn$V1==1 |tic.learn$V1==3 | tic.learn$V1==6 | tic.learn$V1==8 | tic.learn$V1==12 | tic.learn$V1==20) ) 
 </code> </code>
  
行 238: 行 343:
  
 <code> <code>
-tic.eval.visit <- (tic.eval$V47>5.5 & tic.eval$V44<1) | (tic.eval$V47>5.5 & (tic.eval$V1==1 |tic.eval$V1==3 | tic.eval$V1==6 | tic.eval$V1==8 | tic.eval$V1==12 | tic.eval$V1==20) ) +tic.learn.visit <- (tic.learn$V47>5.5 & tic.learn$V44<1) | (tic.learn$V47>5.5 & (tic.learn$V1==1 |tic.learn$V1==3 | tic.learn$V1==6 | tic.learn$V1==8 | tic.learn$V1==12 | tic.learn$V1==20) ) 
 </code> </code>
  
行 245: 行 350:
  
 <code> <code>
-table(tic.eval.visit)+table(tic.learn.visit)
  
 FALSE  TRUE  FALSE  TRUE 
  3029   971   3029   971 
  
-table(tic.eval.visit, tic.eval$V86)+table(tic.learn.visit, tic.learn$V86)
  
-tic.eval.visit    0    1+tic.learn.visit    0    1
          FALSE 2878  151          FALSE 2878  151
          TRUE   884   87          TRUE   884   87
行 281: 行 386:
  
 このモデルに予測に基づいた訪問の成果を検証するには、訪問対象のリストtic.visitと検証用データの正解V86のクロス集計を行えばよい。 このモデルに予測に基づいた訪問の成果を検証するには、訪問対象のリストtic.visitと検証用データの正解V86のクロス集計を行えばよい。
 +V86の保険商品が分析対象の場合は、
  
 <code> <code>
行 350: 行 456:
 V61+V62+V63+V64, family="binomial", data=tic.learn) V61+V62+V63+V64, family="binomial", data=tic.learn)
 </code> </code>
-