Rで線形判別、の前に線形回帰、で、つまずく。データ穴リストのブログスマートフォン用の表示で見るデータ穴リストのブログすべては喰いっぱぐれないために2016-03-12Rで線形判別、の前に線形回帰、で、つまずく。Rさて、本題に入ります。何を書こうか決めてなかった。最近*1仕事でやってることにするか。最近、「製品の上市前にある程度ウケるかどうかチェックしようよ」みたいな流れになってまして、ようやく予測的なお話ができる・・・!・・・んですが、元のデータはユーザビリティテストの値。学習できるデータのある過去製品は...たぶん10製品くらい。すくネェェエェェェエエエ.........と、世の中で活躍されているデータサイエンティストさんたち(呼称に思うところのある方々もいらっしゃると思いますが)は驚かれるかもしれませんが、...世の中こんなもんですよね?前時代的と言われても泣かない。「うんうん、回帰モデルと一緒でしょ?まぁ機械学習的な発想も(しらんけど)この辺から来てんだよね。」くらいの理解でおりました(そして大概読み飛ばしてました)。今まで予測関係全く必要なかったんだもの。思えば座学を受けてもその辺は結構スルーだった気がする。いうわけで、「いまさら聞けない判別分析」、やってみます。判別分析って判別式は書くけどそのモデルの評価ってどこでやってるの?ってところでまずつまづきました。はやい!だって、誤判別率やらクロスバリデーションやらって話は、モデルができてからの話でしょ?そのモデルの統計的有意性については一言も言ってないよね?(え、違うのかな?)の前に、線形回帰じゃぁってんで、とりあえず回帰から行ってみよう、と。ここの変数が有意かどうか、モデルが有意かどうか確認してから判別してみましょうかと。判別分析のフローって、こういうので適切なんだろうか???そもそもそういう、モデルの探索方法だとか、探索まではさておき、分析手法の組み合わせ方とかってほんと説明少ないですよね〜。調査あるあるな「因子分析⇒クラスタ化」も、分析手法の解説本にはそれぞれ書いてあるけど、フローとしては書かれていなかった(まぁそのフローも批判されてるけど)。そんなわけで、とりあえず線形回帰をやってみる。コードをハイライトする、みたいなやり方がよく分からないので、とりあえず分けとく。>|r|#まずは線形回帰モデルにしてみる。train.data)とりあえず上のはあまり参考にはなりません。投入してみたというだけ。#モデルを1個ずつ確認。個々に見るのはこれで良いが、多いといちいちめんどくさい。summary(ach.model1)summary(ach.model2)summary(ach.model3)summary(ach.model4)summary(ach.model5)summary(ach.model6)summary(ach.model7)summary(ach.model8)summary(ach.model9)summary(ach.model10)summary(ach.model11)summary(ach.model12)summary(ach.model13)で、とりあえず各独立変数、あるいは予測因子、それぞれを色んなパターンで投入して、各係数のp値を確認。F検定が有意でないモデル定数項(α)が有意でないモデルモデルの一部が部分的に有意でないモデル(にほんごがおかしい)諸々有意だけど決定係数が異常に高いモデル定数項(α)を除くと有意になるモデルとりあえず、まず言いたい、モデルいっぱいあって見づらい色んなパターン試したけど、何回もやってると「あれ、コレ前に試した時どうだったんだっけ?」とか、思い出せなくなる。世のアナリストさん達は少なくとも10分前に走らせたサマリーくらい覚えておられるのだろうか。残念ながら僕の脳内メモリはそんなに優秀ではない。決定係数が非常に小さいやつ、どうだったか概観できるようにしときたい。いうことで、こんな風にしてみた。#最大値はモデルの数で。なんか変なValueってのがいてデータフレームになってない。#データフレームにそのままする。そのままにしておくと怒られる。#行番号「Value」なるものを消す。これ自体はすごく便利だと思う。これで分析はかなり捗るだろうことは想像に難くない*3でもこの前段階、ゴミみたいなモデルをゴミだと覚えておきたいの。いや、覚えたくないから覚えさせておきたいの。この辺り、もう少し読み進めれば適切な対応が出来るのだろうか。それはさておき、候補になりそうなモデルが出来た。次は正規性の確認とかをプロットして、、、というのは書くの面倒なので、省略します。意味はよく分からんがこの辺はテキストに書いてあった。これを書いてくれないのはいけない。判別にはMASSパッケージを使います。これはもう特に特徴ありません。require(MASS)#判別式を作成。事前確率、グループ平均、係数がそれぞれ出る。モデルが出来たら、予測。これも特に考えることはない。線形判別でなければこの辺でどの分布に当て込むか、methodの指定かなにかをするんだろうけど。今はとりあえずのカタチを作ることが先決。#判別モデルをデータに当てはめ。#これだけ誤判別が発生。説明読んでも忘れるから書いとこう。さぁ予測が出来た!バンザイ!おしまい!とはいかない!我々の目的は何だったか?そう、「なんかそれっぽい絵を作ってそれらしいことを言ってニヤける(ついでにそれなりに褒めてもらう)こと」でしたね?というわけで、次はビジュアライズです。長くなったので後編につづく。*1:とかいいつつ、とりあえず記事書いてから外に出せるコードに直してって暇を見つけながらーと思ったら2か月くらい放置してしまったorz*2:開発自体にかなりの時間を要する製品で、かつ製品間で統一したデータを取り出したのがそこそこ最近ってことで。合わせることもまぁできなくもないけど。*3:ただね、、、デスクトップだとちゃんと動くんだけど、ノートだとエラーが出てきちんと動いてくれないんだよね。作業環境は合わせているはずなんだけど。勉強会したメンバーでも分かれてたから、何か原因があるんだと思うけど。デバッグしてみないといけないのかな。13:03Rで線形判別、の前に線形回帰、で、つまずく。技術ブログ(笑)、始めます。goな今年を振り返る哀しみの果て(分析系キャリア、という罠)gghighlightがステキすぎることをポエむ。shinyにExcelの代わりをさせよう〜VLOOKUP編〜バブルチャートではなく四角でグラフ化~geom_rect()ってなんだ月別アーカイブはてなブログをはじめよう!cun-wangさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。