差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
mselab:2012:stat [2012/10/23 00:56] – [第2週:多変量解析] watalu | mselab:2012:stat [不明な日付] (現在) – 外部編集 (不明な日付) 127.0.0.1 | ||
---|---|---|---|
行 2: | 行 2: | ||
==== 第1週: | ==== 第1週: | ||
- | === 前後関係 === | + | 第1週の内容は[[mselab:2012:stat:week1:r2|week:r2]]に移した。(最初の班への内容は[[mselab: |
- | + | ||
- | まず日本の品質管理の領域では | + | |
- | + | ||
- | * PDCAサイクル | + | |
- | * Plan | + | |
- | * Do | + | |
- | * Check | + | |
- | * Act | + | |
- | + | ||
- | が改善の基本行動パターンとして徹底して用いられる。PDCAでそして | + | |
- | + | ||
- | * QCストーリー | + | |
- | * 問題解決型QCストーリー | + | |
- | * 課題達成型QCストーリー | + | |
- | + | ||
- | が問題解決に関するコミュニケーションのポピュラーなテンプレートとして、それぞれ用いられている。QCストーリーは問題解決のフローチャートでもあり、1度にストーリーを問題設定から水平展開・今後の課題まで直行できる訳はなく、そこここで小さなPDCAサイクルを回しつつ、中ぐらい、大きなPDCAも回すことになる。ただ成果発表は、このテンプレートで行われるのが通例である。 | + | |
- | + | ||
- | QCストーリーに則して説明される問題解決や改善において、日常的に用いる現状把握や問題の解析手法には大きく、 | + | |
- | + | ||
- | * QC7つ道具: | + | |
- | * グラフ | + | |
- | * ヒストグラム | + | |
- | * 管理図 | + | |
- | * チェックシート | + | |
- | * パレート図 | + | |
- | * 特性要因図 (cause and effect diagram) | + | |
- | * 散布図 | + | |
- | * 層別 | + | |
- | * 新QC7つ道具 | + | |
- | * 親和図法 | + | |
- | * 連関図 | + | |
- | * 系統図 | + | |
- | * マトリックス図 | + | |
- | * マトリックス・データ解析法 | + | |
- | * 過程決定計画図法(PDPC法) | + | |
- | * アロー・ダイヤグラム法 | + | |
- | + | ||
- | の2つのセットがある。互いに、QC7つ道具が基本で、新QC7つ道具が少し高度、といった位置づけである。 | + | |
- | 幾つかのシンプルな統計的データ手法と問題解析手法を徹底して使い込むのが、品質管理における現状把握や問題の解析の基本姿勢である。 | + | |
- | また現場のエンジニアが自ら、データの収集、現状把握、問題の解析、状況改善や問題の解決に取り組むこと、そして歯止めや水平展開まで必ず取り組むこと、が日本の産業界の大きな特徴であり、強みである。 | + | |
- | QC7つ道具も新QC7つ道具も、問題解決法と合わせて初めて、これらの名称を持つのであり、手法のみを教育すると、他の名称を持つ酷似した手法との区別が付きにくくなる。 | + | |
- | + | ||
- | 統計工学実験の第1週の目的は、品質管理の探索的データ解析法としてのQC7つ道具の用い方を、演習課題を通した疑似体験を通して学習することである。 | + | |
- | === 配付資料 === | + | |
- | + | ||
- | - 「統計工学第1週」(第1週の実験内容についてのメモ) | + | |
- | - 「講義内演習課題」(これの内容が終わったら、帰ってもいい) | + | |
- | - 「時間外演習課題 解析事例」(時間が余ったら、こっちも終わらせて帰るといい) | + | |
- | - 「データのとり方・まとめ方」(レポートの考察を書く際の参考資料になるかも、と配布した) | + | |
- | === 参考資料 === | + | |
- | + | ||
- | - [[http:// | + | |
- | - [[http:// | + | |
- | + | ||
- | === 講義内演習 === | + | |
- | + | ||
- | - R言語のインストール | + | |
- | * [[http:// | + | |
- | * インストールしたのRのショートカットをデスクトップに作成し、" | + | |
- | - インストールしたフォルダの中でRgui.exeを見つける。 | + | |
- | - Rgui.exeのショートカットをデスクトップに作成する。(作成してから移動してもいい) | + | |
- | - 「Rgui.exeのショートカット」という名称を「実験用R」と変更しておくと、既にインストール済みだったRと区別がつく。 | + | |
- | - ショートカットを右クリックし、プロパティを表示させ、「リンク先」の中の「" | + | |
- | * パッケージをインストールするために、Rの中でプロキシを設定する。 < | + | |
- | * Rの拡張パッケージ(RコマンダーとRコマンダーのプラグインとRコマンダーが必要とするパッケージ)のインストール。ドキュメントにはメニューから・・・とあるが、Rのコマンドラインから次の命令をを実行すれば済む(はず)。< | + | |
- | install.packages(pkgs=c(" | + | |
- | install.packages(pkgs=c(" | + | |
- | install.packages(pkgs=c(" | + | |
- | install.packages(pkgs=c(" | + | |
- | install.packages(pkgs=c(" | + | |
- | install.packages(pkgs=c(" | + | |
- | install.packages(pkgs=c(" | + | |
- | install.packages(pkgs=c(" | + | |
- | install.packages(pkgs=c(" | + | |
- | install.packages(pkgs=c(" | + | |
- | * [[http:// | + | |
- | * [[http:// | + | |
- | - RコマンダーのQC7つ道具プラグイン(パレート図、グラフ、ヒストグラム、散布図)を使ってみる。 | + | |
- | * R 2.13.0以降では、Rコマンダーで日本語を含むデータファイルを読み込むことができないことがある。[[http:// | + | |
- | * グラフの持ち帰り方法には主に次の2つがある。 | + | |
- | * 描画したグラフの上で右クリックをして表示されるメニューで、「メタファイルに保存」(Word等で再利用する場合)か「ポストスクリプトファイルに保存」(LaTeXで再利用する場合)を選ぶ。グラフ1枚ごとに1ファイル保存し、すべて保存し終わったら、圧縮フォルダなどを作成して持ち帰ることになる。 | + | |
- | * 描画したグラフの上で右クリックをして表示去れるメニューで、「メタファイルにコピー」を選び、Wordなどに「貼り付け(P)」る。すべてのグラフを1つのWordファイルに入れて持ち帰ることになる。 | + | |
- | * ファイルの持ち帰り方法には主に次の2つがある。持ち帰ったファイルを再び実験室で必要とすることは、たぶんない。 | + | |
- | * ブラウザで自分のウェブメールにログインし、ファイルを添付して送付する (ブラウザで利用できるGoogle Driveなどのオンラインストレージサービス、宅ふぁいる便などのファイル送信サービスもあり得る) | + | |
- | * 自分のUSBメモリに、ファイルをコピーして持ち帰る | + | |
- | - 「講義内演習課題」の事例に沿って、各種のグラフを作成する (グラフは表示させたら、右クリックで保存できるので、JPEGないしEPSで保存すると良い) | + | |
- | + | ||
- | === 時間外演習 === | + | |
- | + | ||
- | - 「講義内演習課題」と「データのとり方・まとめ方」に則して、考察を付記する。「講義内演習課題」に記されていない考察は、強調して記すこと | + | |
- | - 調べてまとめる (宿題) | + | |
- | * 層別 | + | |
- | * QCストーリー、QCストーリーとQC7つ道具の関係 | + | |
- | * 管理図の種類、作り方、読み方 | + | |
- | - 「時間外演習課題 解析事例」の各種グラフの再現(管理図含む)と、記載されている考察のグラフを見ながらの確認と、この事例のストーリー以外の可能性の検討(技術的詳細を調べる、あるいは想像するなど) | + | |
- | + | ||
- | === レポート === | + | |
- | + | ||
- | レポート提出要領: | + | |
- | + | ||
- | ^項目^指定^ | + | |
- | |提出期限|実験実施の翌週の火曜日の午前10時30分まで| | + | |
- | |提出方法|電子メールに添付 (宛先は配付資料に記載)| | + | |
- | |ファイル形式|Wordファイル (LaTeXで作成する場合は、dvipdfmxでPDFに変換すること)| | + | |
- | |メールの件名|統計工学実験1レポート提出(XXXXXXX)| | + | |
- | |レポートファイルの名称|統計工学実験1_XXXXXXX.doc あるいは 統計工学実験1_XXXXXXX.docx| | + | |
- | |提出部数|レポートは各自1通ずつ。{{: | + | |
- | + | ||
- | === 参考資料 === | + | |
- | + | ||
- | * 荒木孝治・編著 (2009) [[http:// | + | |
- | + | ||
- | === サポート欄 === | + | |
- | + | ||
- | * 経営情報学実験室について、[[mselab: | + | |
- | * Rコマンダーについて、[[http:// | + | |
- | * RとRcmdrとその他のパッケージの組み合わせで、日本語の扱いについて不具合が生じている。 | + | |
- | * qccをインストールすると、RcmdrPlugin.QCtoolsでパレート図が描けるようになる。 | + | |
- | * すべてをインストールすると、日本語を含むデータファイルをメニューで読み込めた、という例がある。 | + | |
==== 第2週: | ==== 第2週: | ||
- | === データの説明 === | ||
- | == TIC2000 == | ||
- | |||
- | [[http:// | ||
- | |||
- | * CoIL 2000 Challengeで用いられた保険会社の顧客に関するデータ。86個の変数は、契約状況(V44-V85)と社会人口統計学的な変数(V1-V43)を含んでいる。この調査は "Can you predict who would be interested in buying a caravan insurance policy and give an explanation why?" という問いに答えるように集められた。 | ||
- | * このデータはオランダのデータマイニング会社Sentinent Machine Researchから提供され、現実のビジネスの問題に基づいている。学習用データ(ticdata2000.txt)は5000レコードでcaravan insurance policyの契約の有無(V86)を含んでおり、検証用データ(ticeval2000.txt)は4000レコードで契約の有無(V86)は含んでいない。検証用データの正解は、CoIL 2000 Challengeの開催時には公開されていなかったが、現在はテストデータ(tictest2000.txt)として公開されている。 | ||
- | * V1-V43のうち、コード化が指定されていない変数はすべて、郵便番号の一桁目のエリアを指している。たとえばV30が9ならばその顧客は郵便番号が9で始まるエリアに家を借りていることを、V31が5ならば郵便番号が5のエリアに持ち家があることを意味する。職業、社会層などもすべて、該当するエリアの箇所が郵便番号の一桁目で埋まっている。 | ||
- | |||
- | == 変数 == | ||
- | |||
- | [[http:// | ||
- | |||
- | |変数|分類|メモ| | ||
- | |V1|顧客分類2|L0でコード化されている、数字の大きさに意味なし| | ||
- | |V2|住居数|大きいほど住む箇所が多い| | ||
- | |V3|世帯構成員数の平均|人数| | ||
- | |V4|世帯構成員の平均年齢|L1でコード化されている、年齢| | ||
- | |V5|顧客分類1|L2でコード化されている、数字の大きさに意味なし| | ||
- | |V6-V9|宗教|L3でコード化されている、V6+V7+V8+V9は9から12の間。それぞれの宗教を信じる割合?| | ||
- | |V10-V13|結婚|場所を表す変数, | ||
- | |V14-V15|世帯の大きさ|L3でコード化されている、なぜかV14+V15は10以下。割合?| | ||
- | |V16-V18|教育水準|L3でコード化されている、なぜかV16+V17+V18はほぼ10、それぞれの年数?割合?| | ||
- | |V19-V24|職業|L3でコード化されている、なぜかV19+V20+V21+V22+V23+V24は9から13の間| | ||
- | |V25-V29|社会層|L3でコード化されている、なぜかV25+V26+V27+V28+V29は9から12の間| | ||
- | |V30-V31|住居|L3でコード化されている、なぜかV30+V31は9か10| | ||
- | |V32-V34|自動車|L3でコード化されている、なぜかV32+V33+V34は9から11の間| | ||
- | |V35-V36|健康保険|L3でコード化されている、なぜかV35+V36は9か10| | ||
- | |V37-V41|収入|L3でコード化されている、なぜかV37+V38+V39+V40+V41は9から13の間| | ||
- | |V42|平均収入|L3でコード化されている| | ||
- | |V43|購買力|L3でコード化されている、1から8の間。| | ||
- | |V44-V64|各種保険支払い額|L4でコード化| | ||
- | |V65-V85|各種保険契約件数|件数| | ||
- | |||
- | メモの確認用のコード。 | ||
- | |||
- | < | ||
- | table((tic.learn$V16+tic.learn$V17+tic.learn$V18)) | ||
- | table((tic.learn$V19+tic.learn$V20+tic.learn$V21+tic.learn$V22+tic.learn$V23+tic.learn$V24)) | ||
- | table((tic.learn$V25+tic.learn$V26+tic.learn$V27+tic.learn$V28+tic.learn$V29)) | ||
- | table(tic.learn$V30+tic.learn$V31) | ||
- | table(tic.learn$V32+tic.learn$V33+tic.learn$V34) | ||
- | table(tic.learn$V35+tic.learn$V36) | ||
- | table(tic.learn$V37+tic.learn$V38+tic.learn$V39+tic.learn$V40+tic.learn$V41) | ||
- | </ | ||
- | |||
- | |||
- | == 各変数のコーディング == | ||
- | |||
- | L0: | ||
- | |||
- | |Value|Label| | ||
- | |1|High Income, expensive child| | ||
- | |2|Very Important Provincials| | ||
- | |3|High status seniors| | ||
- | |4|Affluent senior apartments| | ||
- | |5|Mixed seniors| | ||
- | |6|Career and childcare| | ||
- | |7|Dinki' | ||
- | |8|Middle class families| | ||
- | |9|Modern, complete families| | ||
- | |10|Stable family| | ||
- | |11|Family starters| | ||
- | |12|Affluent young families| | ||
- | |13|Young all american family| | ||
- | |14|Junior cosmopolitan| | ||
- | |15|Senior cosmopolitans| | ||
- | |16|Students in apartments| | ||
- | |17|Fresh masters in the city| | ||
- | |18|Single youth| | ||
- | |19|Suburban youth| | ||
- | |20|Etnically diverse| | ||
- | |21|Young urban have-nots| | ||
- | |22|Mixed apartment dwellers| | ||
- | |23|Young and rising| | ||
- | |24|Young, low educated | | ||
- | |25|Young seniors in the city| | ||
- | |26|Own home elderly| | ||
- | |27|Seniors in apartments| | ||
- | |28|Residential elderly| | ||
- | |29|Porchless seniors: no front yard| | ||
- | |30|Religious elderly singles| | ||
- | |31|Low income catholics| | ||
- | |32|Mixed seniors| | ||
- | |33|Lower class large families| | ||
- | |34|Large family, employed child| | ||
- | |35|Village families| | ||
- | |36|Couples with teens ' | ||
- | |37|Mixed small town dwellers| | ||
- | |38|Traditional families| | ||
- | |39|Large religous families| | ||
- | |40|Large family farms| | ||
- | |41|Mixed rurals| | ||
- | |||
- | L1: | ||
- | |||
- | |1|20-30 years| | ||
- | |2|30-40 years| | ||
- | |3|40-50 years| | ||
- | |4|50-60 years| | ||
- | |5|60-70 years| | ||
- | |6|70-80 years| | ||
- | |||
- | L2: | ||
- | |||
- | |1|Successful hedonists| | ||
- | |2|Driven Growers| | ||
- | |3|Average Family| | ||
- | |4|Career Loners| | ||
- | |5|Living well| | ||
- | |6|Cruising Seniors| | ||
- | |7|Retired and Religeous| | ||
- | |8|Family with grown ups| | ||
- | |9|Conservative families| | ||
- | |10|Farmers| | ||
- | |||
- | L3: | ||
- | |||
- | |0|0%| | ||
- | |1|1 - 10%| | ||
- | |2|11 - 23%| | ||
- | |3|24 - 36%| | ||
- | |4|37 - 49%| | ||
- | |5|50 - 62%| | ||
- | |6|63 - 75%| | ||
- | |7|76 - 88%| | ||
- | |8|89 - 99%| | ||
- | |9|100%| | ||
- | |||
- | L4: 順序尺度。今回はこのまま連続尺度の変数として用いる。 | ||
- | |||
- | |0|f 0| | ||
- | |1|f 1 - 49| | ||
- | |2|f 50 - 99| | ||
- | |3|f 100 - 199| | ||
- | |4|f 200 - 499| | ||
- | |5|f 500 - 999| | ||
- | |6|f 1000 - 4999| | ||
- | |7|f 5000 - 9999| | ||
- | |8|f 10.000 - 19.999| | ||
- | |9|f 20.000 - ?| | ||
- | |||
- | == 参考 == | ||
- | |||
- | kernlabパッケージに、加工済みのデータが入っていて、それを使うこともできる。 | ||
- | |||
- | < | ||
- | install.packages(c(" | ||
- | tic.learn <- ticdata[1: | ||
- | tic.eval <- ticdata[5823: | ||
- | </ | ||
- | |||
- | === 今回の課題 === | ||
- | == 概要 == | ||
- | |||
- | * 重回帰分析を用いて、ある保険商品の契約に関する予測式を構築せよ。 | ||
- | |||
- | == 準備 == | ||
- | |||
- | < | ||
- | library(MASS) | ||
- | </ | ||
- | |||
- | この課題ではMASSライブラリのみ、使う可能性がある。 | ||
- | |||
- | == データの読み込み == | ||
- | |||
- | < | ||
- | tic.leaan <- read.table(" | ||
- | tic.eval <- read.table(" | ||
- | tic.test <- read.table(" | ||
- | tic.eval <- cbind(tic.eval, | ||
- | colnames(tic.eval)[86] <- " | ||
- | rm(tic.test) | ||
- | </ | ||
- | |||
- | == 少し加工する == | ||
- | |||
- | 以下の6行は、実行しない方がいい場合もある。 | ||
- | |||
- | < | ||
- | tic.learn$V1 <- as.factor(tic.learn$V1) | ||
- | tic.learn$V5 <- as.factor(tic.learn$V5) | ||
- | tic.learn$V86 <- as.factor(tic.learn$V86) | ||
- | tic.eval$V1 <- as.factor(tic.eval$V1) | ||
- | tic.eval$V5 <- as.factor(tic.eval$V5) | ||
- | tic.eval$V86 <- as.factor(tic.eval$V86) | ||
- | </ | ||
- | |||
- | あとはそのまま。 | ||
- | |||
- | == 考えたルールに基づく対象限定 == | ||
- | |||
- | 各変数に閾値を設けてルールを生成したとする。 | ||
- | たとえば、「V47が5.5以上かつV44が1未満」または「V47が5.5以上かつV1が{1, | ||
- | 次のように記す。 | ||
- | |||
- | < | ||
- | (tic.eval$V47> | ||
- | </ | ||
- | |||
- | 「& | ||
- | |||
- | このルールを検証用データに適用するには、 | ||
- | |||
- | < | ||
- | tic.eval.visit <- (tic.eval$V47> | ||
- | </ | ||
- | |||
- | と、訪問するか否かを二値(TRUE, | ||
- | このモデルに予測に基づいた訪問の成果を検証するには、訪問対象のリストtic.visitと検証用データの正解V86のクロス集計を行えばよい。 | ||
- | |||
- | < | ||
- | table(tic.eval.visit) | ||
- | |||
- | FALSE TRUE | ||
- | | ||
- | |||
- | table(tic.eval.visit, | ||
- | |||
- | tic.eval.visit | ||
- | FALSE 2878 151 | ||
- | | ||
- | </ | ||
- | |||
- | ここでは、訪問対象に884+87=971人を選定し、そのうちの87人が実際に契約してくれる人だったことになる。 | ||
- | 契約率は87/ | ||
- | < | ||
- | (884+151)/ | ||
- | </ | ||
- | で25.9%となる。 | ||
- | |||
- | == モデルに基づく対象限定 == | ||
- | |||
- | 学習したモデルに基づいて、訪問対象を狭めるには、predict()という関数を用いて、訪問対象か否かというリストを作成する。 | ||
- | まず、設定まで調整したモデルを、学習用データ(tic.learn)から得る。 | ||
- | |||
- | < | ||
- | tic.rpart <- rpart(V86~., | ||
- | </ | ||
- | |||
- | 次に、このモデル(ここではtic.rpart)を検証用データ(tic.eval)に適用して、契約してくれるか否かの予測を行う。 | ||
- | この際、0.05という閾値も調整の必要がある。 | ||
- | |||
- | < | ||
- | tic.eval.visit <- predict(tic.rpart, | ||
- | </ | ||
- | |||
- | このモデルに予測に基づいた訪問の成果を検証するには、訪問対象のリストtic.visitと検証用データの正解V86のクロス集計を行えばよい。 | ||
- | |||
- | < | ||
- | table(tic.eval.visit) | ||
- | |||
- | tic.eval.visit | ||
- | FALSE TRUE | ||
- | | ||
- | |||
- | table(tic.eval.visit, | ||
- | |||
- | tic.eval.visit | ||
- | FALSE 2310 79 | ||
- | | ||
- | </ | ||
- | |||
- | ここでは、訪問対象に1452+159=1611人を選定し、そのうちの159人が実際に契約してくれる人だったことになる。契約率は159/ | ||
- | また誤判別率は | ||
- | < | ||
- | (79+1452)/ | ||
- | </ | ||
- | で38.275%となる。 | ||
- | |||
- | == 想定される困難 == | ||
- | |||
- | 次の1行を実行すると、かなり時間がかかってエラーになる。 | ||
- | < | ||
- | tic.glm.step <- step(glm(V86~., | ||
- | </ | ||
- | |||
- | 次の4行、いずれもエラーになる。変数間の関係が悪すぎるよう。変数の意味を考えて、追加しないといけないかも。 | ||
- | |||
- | < | ||
- | tic.glm <- glm(V86~V1+V2+V3+V4+V5+V6+V7+V8+ | ||
- | V11+V12+ | ||
- | V21+V22+V23+ | ||
- | V33+V34+V35+ | ||
- | V42+V43+V44+V45+V46+V47+V48+V49+V50+ | ||
- | V51+V52+V53+V54+V55+V56+V57+V58+V59+V60+ | ||
- | V61+V62+V63+V64+V65+V66+V67+V68+V69+V70+ | ||
- | V71+V72+V73+V74+V75+V76+V77+V78+V79+V80+ | ||
- | V81+V82+V83+V84+V85, | ||
- | table(predict(tic.glm, | ||
- | </ | ||
- | |||
- | < | ||
- | tic.glm <- glm(V86~ | ||
- | V11+V12+ | ||
- | V21+V22+V23+ | ||
- | V33+V34+V35+ | ||
- | V42+V43+V44+V45+V46+V47+V48+V49+V50+ | ||
- | V51+V52+V53+V54+V55+V56+V57+V58+V59+V60+ | ||
- | V61+V62+V63+V64+V65+V66+V67+V68+V69+V70+ | ||
- | V71+V72+V73+V74+V75+V76+V77+V78+V79+V80+ | ||
- | V81+V82+V83+V84+V85, | ||
- | </ | ||
- | |||
- | < | ||
- | tic.glm <- glm(V86~V44+V45+V46+V47+V48+V49+V50+ | ||
- | V51+V52+V53+V54+V55+V56+V57+V58+V59+V60+ | ||
- | V61+V62+V63+V64+V65+V66+V67+V68+V69+V70+ | ||
- | V71+V72+V73+V74+V75+V76+V77+V78+V79+V80+ | ||
- | V81+V82+V83+V84+V85, | ||
- | </ | ||
- | |||
- | < | ||
- | tic.glm <- glm(V86~V44+V45+V46+V47+V48+V49+V50+ | ||
- | V51+V52+V53+V54+V55+V56+V57+V58+V59+V60+ | ||
- | V61+V62+V63+V64, | ||
- | </ | ||
+ | 第2週の内容は[[mselab: | ||
==== 第3週: | ==== 第3週: | ||
- | * R言語 | + | 第3週の内容は[[mselab: |