2018年10月15日月曜日

エクセルで回帰分析用のデータを作るための準備作業をざっくり解説

重回帰分析をするためには、ローデータを加工して重回帰分析用のデータに変換する必要があります。そのための手順をざっくり解説します。
今回は、あるECサイトである商品の売上がどんなものに影響を受けるのかを知りたい場合を例とします。

①成果データの確認(目的変数の設定)

商品の売上と簡単に書きましたが、何月から何月までの売上か?指標は売上点数か?金額か?対象となる商品はECサイトで扱う全商品か?一部の商品なのか?など、成果データの条件を整理します。

今回は、誕生祝いのベビー服の直近3年間の月次売上点数とします。

②成果要因の洗い出し( 説明変数の洗い出し)

設定した成果に対して影響を与える変数をブレストベースで洗い出しします。洗い出しは紙とペンでもいいですし、エクセルでもいいです。

以下のイメージのような形で、成果データにどんなものが影響を与えるのか?の因果構造を矢印で作ります。

イメージ:

③説明変数の設計/取得可否の確認

ブレストベースで洗い出しした要因について、実際に数値データとして取得できるものに変換します。
例えば、「赤ちゃんがその月に多く生まれた」であれば、政府のサイトから月次の出生人数を取得できるか調べ、取得できれば「月次出生人数」を変数に加えます。

④データの作成

説明変数の設計と取得可否の確認ができたら、あとは解析用のデータを作るだけです。
基本的には、データは「1つのy 目的変数」と「たくさんのx 説明変数」として、整理して作るとわかりやすいです。
特に、重回帰分析は変数選択を繰り返ししてモデリングするため、データはきれいに作り、yは左端にしたり、xはわかりやすい変数名をつけるなどしておくとスムーズかもしれません。

イメージ:













回帰分析用のデータを作る際は、エクセル作業よりも前段階の考える時間が重要かもしれません。つまり、どんなモデルを作るのか?のお題設定と、どんな変数を作るのか?の変数設定ができると、エクセルでの作業もスムーズに進められるかもしれません。

2018年10月13日土曜日

エクセル作業のミスを減らすには「フィルタ機能」を上手に使う必要があります

エクセルは自由にデータ操作をできるのが便利な反面、意図しない操作を無意識にやってしまい、間違ったデータを作ってしまうことがたまにあるかと思います。

フィルタ機能を活用すれば、このような思いもしないミスを減らすことができます。
特に、データを用意しているときに間違えすいところは

  • データのソート(並べ替え)をしたとき
  • データをコピーするとき

が挙げられます。
とくに空白セルが多い場合にはミスが起こりやすくなります。
それを防ぐために、ソート機能を使いましょう。

サンプルデータ

名簿データなのですが、途中で空白行が入っていたとします。
E列を選択し、年齢で大きい順にソートした場合、の結果です。


※拡大
空白行を境にして、上のデータまではソートされていますが、下のデータはソートが適用されていません。今回のような10件程度であれば気づくことができますが、1000件以上もあるあようなデータだと、今回のようなミスが起こっても気づくことは難しいのです。


どうするか

データ全体を確認して、全範囲を指定してフィルタを適用することです。
(注意!左上の一部のセルだけを指定するのではなく、データ全体を指定してフィルタを適用ことがコツ!)

そうすることで、空白行があっても囲っているデータ全体でソートをできるようになります。また、フィルタで空白のある行を除くこと(非表示にすること)ができるので、コピーをする際にもミスを防ぐことができます。

①データ全体を指定する

※データ全体を指定するには空白に注意しながら、shift + ctrl + ↓キー⇢キー を使うと便利です。


②フィルタを適用する


完成!

まとめ

  • データを操作する前に、データ全体の範囲を確認する
  • 確認ができたら、全範囲を選択して、フィルタを適用する
  • フィルタ機能を使い、空白セルの処理(削除する/注意文言を入れる など)を行う







2018年10月9日火曜日

「分析のプロセス」について



 分析プロセスの代表的なものに「CRISP-DM」や、「Import, Tidy, Transform, Visualize, and Model 」などが挙げられると思いますが、組織でのマーケティング活動における分析プロセスについて、個人的に重要だと思うステップを紹介します。

  • 分析のプロセス① キーマンの把握
  • 分析のプロセス② 目的設定
  • 分析のプロセス③ データの収集・分析
  • 分析のプロセス④ 分析結果の共有・展開

分析のプロセス① キーマンの把握

 組織活動において、分析結果はその組織の状態を把握し、意思決定をするための情報として活用されます。また、その意思決定は重要な人が一人で決める場面が多くあります。分析レポートを書く立場である場合は、誰がその判断を下すのか?を把握すると、そのキーマンに響くレポートを具体的に意識して書けるようになるでしょう。
 キーマン(例えば会社の社長や、マーケティング部部長)はなんの事前説明もなしに重回帰分析の係数情報やp値を提示するだけで理解できる人・さらに、それを知りた人もいれば、統計解析の結果を出しても理解できない人まで様々です。分析リテラシーの低い人に重回帰分析をした結果を提示しても、「?」で終わってしまうことが目に見えています。
 逆に、分析レポートの内容が良ければ、基本的にレポートの内容に沿った形で、会社の意思決定がなされたり、会社の大きな方針決めの要因になったりします。キーマンの関心に沿った良いレポートを作り、説明&説得できたときの喜びもひとしおです。

分析のプロセス② 目的設定

  目的設定はキーマンの関心ごとに合わせる必要があります。莫大な予算を投下したマーケティングキャンペーンの効果検証をするときにも、単に「キャンペーンの成果」だけを示せればいいのか?「キャンペーンの成果が良くなかったのは既に分かっていて、何が原因で失敗してしまったことを示す」必要があるのか?など、意思決定のキーマンと対話し、どういったことについて分析しなければならないのかを明確にします。
 ここで難しいのは、キーマンは分析のプロではないことが多々であるので、「どんな分析をしたら、キーマンが知りたいことを明らかにできるのか?」は、分析コンサルティング会社に相談したり、自分で考える必要があります。(がんばろー)

分析のプロセス③ データの収集・分析

 キーマンとの目的設定の対話が終了してしまえば、あとは作業です。大規模な組織ではデータの収集に苦労しますが「キーマンがやれっていってるから〜」の一言で、データの収集もスムーズに終了します。分析も目的が明確であればやりやすいです。

分析のプロセス④ 分析結果の共有・展開

 分析結果の共有・展開をする上で気をつけなければならないことは、レポートの品質がある一定以上になってからすることです。具体的には集計値にミスがないこと。集計方法についてレポートに記載すること。が前提です。
 前者ですが、明らかにミスと分かる数値が入っている状態で展開した場合、レポートを書いた人の信頼が落ちます。家にゴキブリを一匹見たら、その家には・・・の法則で、数値ミスが一箇所でもあった場合はそのレポートは信用ならないものと思われますし、信頼を取り戻すのにも相当な労力が必要になります。後者は、例えばユニークユーザーを例に取ると、ブラウザベースなのか、本当に一人の人間ベースなのかで意味も変わってきます。カウントする定義や割り算の数式などは注釈として記載しておくと親切です。


 以上が個人的に大事だと思う分析プロセスです。









2018年5月8日火曜日

データサイエンスの勉強に使える無料のデータ

データ分析の実践をする上で欠かせないのがデータ。社会人の人は会社のデータを使えばいいですが学生だと自分でデータ用意するのは難しいですよね。他のデータも扱って色々とやってみたいと思いますよね。kaggleに参加するのも手ですが、初心者はハードルが高いです。

そこで、気軽に勉強できるサンプルのデータをご紹介します。

自然科学系データ

■気象庁 過去の気象データ

→ 気温や降水量など季節性がはっきりしているので、ARIMAとかカルマンフィルターのモデルを作るのに適したデータになっています。


マーケティング系データ

■KSPーSP 食品スーパー新商品売れ筋ランキング

→ 週次のPOSの売上ランキングが掲載されています。毎週のランキングをつなげ合わせることで、特定商品の売上をトラッキングすることもできます。
なお、CSVでの提供はないようなので、自分でHTMLファイルを加工してデータを作成する必要があります。


経済系データ

■セントラル短信 FXデータ

→ 各種類の通貨ペアの日足、週足、月足のデータが掲載されています。単純な値動きでけでなく、移動平均やボラティリティなどでk-meansなどでセグメントをし、各セグメントの特徴を抽出するなどの練習ができると思います。


【サンプルデータ付きの本を購入するのも手】

2018年5月7日月曜日

データ分析で使えるエクセルの機能と関数のまとめ

エクセルの関数は星の数ほどありますが、便利な関数だけ覚えておけば大丈夫です。
では、データ分析でよく使えるエクセルの機能や関数はどういったものがあるでしょうか?


■フィルタ

「フィルタ」を使うと簡単便利にデータを絞り込むことができます。
メニューからデータ→フィルタをクリックすればできますが、
ショートカットキーを覚えて置くと便利です。
ショートカットはAltボタンを押しながら、D+F+F(Fボタン2回)です。

■マージ

以前の記事でも紹介しましたが、Vlookup関数はエクセルで分析をする上で必要不可欠な関数です。必ず覚えたい関数ですね。

■トランスフォーム(数値変換)

日付を操作する関数

  • year(日付)    → 年だけ
  • month(日付) → 月だけ
  • day(日付)   → 日だけ
 日付から、年だけ、月だけ、日だけを取り出す関数です。特にmonth関数は月次の数値を計算するときのキーを作るときによく使う関数です。

さらに
  • weekday(日付) → 曜日に変換
  • weeknum(日付) → その年の何番目の週か?(週数)
曜日別や週次の推移を計算する際にはこうした関数も覚えて置くと便利です。

文字列操作する関数

  • left(文字列 , 文字数) → 指定した文字列のから指定した文字数だけ抽出
  • right(文字列 , 文字数)   → 指定した文字列のから指定した文字数だけ抽出
  • ASC(文字列) → 全角カタカナを半角カタカナに変換
アンケートデータに入っているフリーアンサー情報などを加工する際によくつかう関数です。

異常値を操作する関数

  • IF関数
  • IFERROR関数
少し高度なデータ操作をする場合には、IF関数も理解する必要があります。IF関数は覚えなくてもデータの加工はできるので、「効率的にエクセルの関数を組めるようになりたい!」と感じるようになってから勉強すればいいと思います。


【参考になる本】

2017年12月19日火曜日

分析設計の仕方


過去の記事で、準備作業の全体を紹介しましたが、
今回は、分析設計の方法について深掘りしたいと思います。

過去の記事:

データ分析前の準備作業 (概要)
https://daaataaa.blogspot.jp/2015/10/blog-post.html


分析設計書の項目

分析設計書は書かなくても、分析できますが会社や研究などで作業を始めるときは作っておいた方が迷うことがなくなるのでスムーズです。

最低限書くべき項目は、
  1. 概要
  2. 目的
  3. 仮説
  4. データ
あったほうがいいものは、
  1. 作成する説明変数
  2. 分析ステップ
※これらの項目はこれが正解というものでもないので、適時カスタマイズしてください。

①概要


概要には、分析が必要となっている背景や状況を書きます。
あとで振り返るときなどに、なんでこの分析したんだっけ??
という状況を打破できます。打破打破。

②目的

目的には、何を明らかにするのかを書きます。
ビジネスオーナーと、アウトプットを明確にするための共通意識を形成するためのものです。
分析者とビジネスオーナーが一致する場合は不要ですが、あまりないと思います。
ビジネスオーナーとは分析をお願いする人です。会社では上司だったり、お客さんだったり、大学では教授とかになるんですかね?
※目的の設定は意外と難しい作業で慣れが必要です。

③仮説

目的とセットで作ります。何が要因となっているのか?どこを掘れば、目的を達成するためのインサイトを抽出できるのか?をビジネスオーナーと一緒に議論するたたき台にもなります。
あまり分析に関与するメンバーが少ない場面でも、これがあると「あそこも見なきゃ!あれもたさなきゃ!」みたいな雑念が消えるので目的を達成するための最短経路をつくれるなどの、メリットがたくさんできるのでおすすめです。

※雑念が出た場合はメモしておいて、次ステップに回したり、考察のしたりするときなどに使ったりできます。

④データ

分析に使うデータを定義します。
割りと企業なんかだと、例えば売上金額にしても、POSデータ、CRMの売上データなど同じデータでも複数のデータ・ソースがあるため、これもビジネスオーナーと認識をあわせるのに作っておいて、確認するという意味でも最初に明記しておくのがおすすめです。


補足:目的と仮説について


目的と仮説の書き方ですが、例えば目的を「CRMにおける離反モデル構築する」とした場合、仮説は、「離反は月次購入金額が影響するのか?、直近半年における日曜日の来店回数も影響するのか?」など書きます。箇条書きで整理すると分かりやすいと思います。


あったほうがいいもの①作成する説明変数

これも目的と仮説に対応させて作成します。
例えば、
 月次購入金額 = 月数をキーにして売上金を合計する
など具体的な変数の作り方を書きます。

あったほうがいいもの①分析ステップ

分析する作業になれてくれば作らなくてもいいですが、先に作っておくと、
スムーズに分析作業をすすめることができます。
  1. 前処理
  2. ビジュアライズ
  3. モデリング
  4. レポーティング用のビジュアライズ、モデル詳細の出力
など予め必要となる作業ステップや、出力物をメモしておけるとスムーズです。

まとめ

分析設計は、
  • 分析を達成するゴール設定を明確にする
  • ゴールを達成するための手段を具体化する
  • 目的と手段を分析に関わるメンバーに共有し、同じ認識を持つ
ために作りましょ!

2017年12月5日火曜日

SQL分析をスタートするために最低限覚えておくべきこと

大きなデータを使うには、SQLは避けて通れません。
とはいえ、SQLで分析には、大変な労力となります。

大変な労力となる理由:いっぱいSQLがある

SQLといっても、MySQLやPostgreSQLから、BigQueryなどのクラウドサービスまで多様な種類のSQLが存在するので、細かく覚えないといけないためです。
基本はどれも一緒ですが、分析までしようとすると、データベース独自の関数を覚える必要があります。
さらに、一つの会社で、複数のデータベースを使っている場合があるので、完璧先生を目指すとなると長い年月が必要となります。

じゃあどうしよう→基本だけ覚える

基本はselect句、from句、where句だけ覚えてしまえば、技術者以外の単に仕事で使いたい人が作業する分には十分です。仕事で使う場面というは「いつ、誰が何をいくら買ったか?」「どのページを何回みたか?」などを指しています。

初心者の方に説明しますと、DB(データベース)は大きなエクセルファイルです。
その中にtable(テーブル)と呼ばれるシートがいくつか入っています。
あまりにもデータが大きいので、エクセルのように一度に開くと大変なことになりますが、必要な列だけとか、必要な行だけ抽出するための操作がSQLとなります。

SQLのはじめに

エクセルでsheet1全体を開く操作をSQLで書くと、
----
 SELECT * FROM sheet1
----
となります。
selectの後ろの*印は全部の列を指定する。
fromの後ろのfromはどのテーブルかを指定する。といった具合です。

sheet1に一億行のデータが入っているとPCが大変なことになる(基本的にはならずエラーを返してくれるはず)ので、そういう場合は、limitをつけてちょっとだけ見せてとおことわりを入れます。

----
 SELECT * FROM sheet1 limit 100
----

とすれば、最初の100行だけ持ってくるので、安心です。
これはデータの中身を確認したいときによく使うフレーズです。

①SELECT句の役割について

SQLは非常にシンプルな作りなので、上記でだいたいの構造は理解できると思いますが、
select句は、カラム(列)を選択する句です。
変数名を記入し、複数ある場合はカンマでつなぎます。
* はワイルドカードですべての行を取得します。 

②FROM句の役割について

FROM句はどのテーブルからデータを取得するのかを指定します。
例えば FROM salesなどと書くとsalesテーブルからデータを取得します。

③WHERE句の役割について

WHERE句では、抽出するデータの条件を設定します。
例えば、「WHERE  age > 70 」と書くと、70歳超の人のデータだけが出力されます。

次のステップはGROUP BY句やJOINを覚えることだが

まずは、①〜③とlimitを使い、取得したいデータを自在に操作できるようになることが重要です。データ範囲の指定は、基本的な操作です。しかし正確に集計をする上では、実は非常に難しい操作であったりもします。
抽出したいデータを取り出し、エクセル等のツールで集計&分析を正確にできるようになってから、GROUP BY句を覚えるので十分だと思います。

まとめ

まずは、select 〜〜〜 from 〜〜〜 where 〜〜〜 と正確に抽出したいデータ範囲を指定することから始めよう!
集計は無理にSQLで行おうとせず最初は、エクセルやTableauを使っちゃおう!



2017年11月19日日曜日

エクセルでデータ分析をするために最低限覚えるべき3ポイント

SQLをはじめ、RやPythonを使えることに越したことはないですが、エクセルでも十分頑張れば、分析できるものだと思います。

エクセルでデータを処理することに不自由を感じたら、SQLやR、Pythonのスキルを習得できればいいと思います。

では、エクセルで何を覚えれば自在にデータを扱えるようになるのでしょうか?

ポイントを絞って3つだけ。

ポイント

  1. シフトとコントロールキーを組みあわせたショートカットキー使い方
  2. vlookup関数
  3. ピボットテーブル


【ポイント1】シフトとコントロールキーを組みあわせたショートカットキー使い方

シフトキーを押しながら→を何回か押すと複数のセルを選択できることが分かります。
そして、コントロールキーを押しながら→を1回押すと右端のセルまでジャンプできます。また、セルに値が入っている場所を選択しているときにコントロールキーを押しながら→ボタンを押すと値が入っている所までジャンプしてくれます。

※難しいので、実際にエクセルを触りながらいじってみるとシフトとコントロールキーの役割がわかるはず!シフトはキープしてくる。コントロールキーはジャンプしてくれる。という感覚を身に着けられればOK!

シフトキーとコントロールキーを組み合わせることで、自在にセルの選択できれば、効率も上がってきます。

【ポイント2】vlookup関数

vlookup関数はデータとデータをつなげる関数です。
たとえば、商品IDに商品名を紐付けするときなどに使います。
vlookup関数に使い慣れることで、マージ(merge)と呼ぼれるデータ操作の初歩を学ぶことができます。

操作方法はこちら:


【ポイント3】ピボットテーブル

ピボットテーブルは、集計をするための機能です。
たとえば、商品ごとの月次の合計売上金額を出したいときなどに使います。
ピボットテーブルを使い慣れることで、集約(group by)と呼ばれるデータ操作を学ぶことができます。

操作方法はこちら:


まとめ

エクセル等の表計算ソフトは、直感的にデータを触ることができる(データフレームの各要素をマウスでいじれる)ことが最大の利点ですが、逆にそれ故手間がかかってしまうことが弱点です。エクセルでのデータ操作に慣れ、より効率的にデータ処理をしたいと思ったらSQLのスキルを身につけられるといいと思います。

2015年10月14日水曜日

データ分析前の準備作業

データ分析をしたことがないのに、
いきなりRを触るのはハードルが高いですよね。。
データを分析する前の作業はどういったものがあるのかをご紹介します。

分析設計

ビジネスの現場において分析作業を始める前には、分析設計を行います。

 ①目的の作成
  ⇒分析によって解決したい課題は具体的に何か?

 ②分析ステップの作成
  ⇒目的を達成するための作業はどういったものはあるか?

 ③分析ストーリーの作成
  ⇒分析によって、どういった数値をだして、その数値に何を語らせるか?


分析に関わるメンバーが少なければ、これらをまとめる設計書はメモ程度のもので大丈夫。客先に提出したり、責任者の合意を得て進める分析プロジェクトであれば、エクセルやパワーポイントで資料化します。

データの収集

分析設計が終わったら、分析につかうデータを集めます。
大きく、2つの集め方があるかと思います。

 ①既存のデータを使う(人からもらう)
  ⇒たとえばデータベースを管理している人

 ②自らデータを作る(自分で作る)
  ⇒たとえば、アンケートを実施して、集める


特に前者は、どれだけデータベースに負荷をかけるのか?ネットワークの権限設定をする必要があるのか?など、システムやセキュリティに影響を及ぼす範囲を確認する必要があります。

データの確認

データを収集したあとに、データ確認をします。
データがきちんとしたものでないとわかった時が、
遅ければ遅いほど、手戻りの量が増えてしまうので、
この作業は、極力早い段階で実施することが需要です。

 ・レコードの数(何行のデータか?)
 ・データ期間(いつからいつまでのデータか?)
 ・欠損値の数(データに抜けはないか?)

これらの作業が終了したら、いざ集計作業となります。

データ分析前にすべき準備方法について参考になる本はこちら。

2014年7月8日火曜日

回帰分析について

エクセルの重回帰分析の見方について、 記載していますが

回帰分析ってなんですかね?
人向けの記事です。

■そもそも回帰ってなんですかね?


背の高いお父さんと、背の高いお母さんから
生まれた子どもがあまり背が伸びず、
逆に背の低い両親の子どもの背が伸びて
高い身長になる。。。

みたいに、身長が平均値に近づいていく
ことを回帰といいます。

ですが、この回帰と回帰分析とはあんまり関係ありません。
”回帰分析”という名前だけ覚えてください。


■回帰分析でできることの前に問題


ひょんなことから、自分の家の近所に
自販機を置くことにしました。
あなたは、高い売上のところに
自販機を置きたい気持ちでいっぱいです。

|自販機をおけそうな場所


・並木通り(一日5千人通るとこ)
・海岸通り(一日1万5千人通るとこ)

※ただし、自販機をおける場所は1つだけ

鼻息を荒くしているところに、
近所に自販機をおいている友達が
売上情報を教えてくれました。

|友達がおいている自販機の売上情報


・一日1万人通るところは、一日1万円の売上
・一日2万人通るところは、一日1.5万円の売上
・一日3万人通るところは、一日1.8万円の売上

人数が増えるほど、売上があがるので、
「海岸通り」に出店したいところですが、
場所代がそれぞれかかるみたいです。

|自販機の場所代

・並木通り⇒一日:3千円
・海岸通り⇒一日:8千円

場所代を考えると、
設置場所を慎重に考える必要がありそうです。


■回帰分析でできること

回帰分析では、与えられた情報をもとに、
何人通るかを予測することができます。

そこで、与えられた情報を回帰分析してみましょう。
僕らが知りたいのは、まずは売上です。

友達の持っている情報で、
回帰分析した結果、売上はこんな式で表現できるようです。

売上 = 0.4 × 一日に通る人数 + 6333

※6333は定数
※これはエクセルで簡単に計算できます。

■回帰分析を使って答えを解く

回帰分析で売上を計算する式がわかりました。

並木通りの売上 = 0.4 × 5000(人) + 6333 = 8333円
海岸通りの売上 = 0.4 × 15000(人) + 6333 = 12333円

一日の売上の予想がたったので、
売上から場所代を引いて利益を計算してみます。

並木通りの利益 = 8333 - 3000 = 5333円
海岸通りの利益 = 12333 - 8000 = 4333円

ということで、
並木通りに設置するのが良さそうということが分かりました。

※エクセルの見方ややり方はこちらを



2014年6月18日水曜日

三角のチャート

r-bloggersで三角のチャートみつけて、
「3軸を平面でプロットしてる!報告書とかに、それっぽいチャートとして使えそう!」
と思ったんですけど、読み取り方が難しいすね。。

試しに、いつものirisデータでプロットしたやつを掲載しておきます。




以下サンプルコード
 

#install.packages("ggtern")
libarary(ggtern)
ggtern(data = iris, aes(Sepal.Length, Sepal.Width, Petal.Length)) + geom_point(aes(color = Species))

2014年5月23日金曜日

データクレンジング(データクリーニング)について


データマイニングをする上で、
データクレンジングにかかる作業量は
全体の8割に達するそうです。

ということで、最近、読んだ文献
https://www.prometheusresearch.com/good-data-management-practices-for-data-analysis-tidy-data-part-2/

データクレンジングがなされたデータはTidy dataといって、
下記の3条件を満たすとのことです。


 1.Each variable forms a column
 2.Each observation forms a row
 3.Each data set contains information on only one observational unit of analysis
  (e.g., families, participants, participant visits)

で、上記文献を含め、色々な文献を見てみると、
データ分析の作業は下記のような流れに整理できるっぽいです。

input→tidy→(trasnform⇔model⇔visualize)→output

でもって、この作業に対応してるRのパッケージが、

reshape2
plyr(いまはdplyrも?)
ggplot2

とのことでした。
ちなみに、trasnformの考え方,split-apply-combineなんかは、
pythonの分析パッケージとかにも影響を与えていたりするんで、
R以外のソフトウェアでデータ分析をしている人にも話したい内容ですよね。



2014年4月25日金曜日

お手軽すぎるビッグデータ解析ツール


H2Oというツールがあるらしいです。
「もらったCSVファイルが重くてエクセルで集計できない。」とか、
「機械学習的なことしたいけど、プログラミングなんかできないわよ。」とか、
「ガラポンでディープラーニングやってみたいわー。」とかとか、

というときに良さそうな感じのツールなので、記事にしてみました。
リンク先からダウンロードできます。
操作方法は丁寧に書いてあるし、
入出力の操作方法もシンプルなのでわかりやすいです。


以下は、試してみたことをメモしています。

■ダウンロードとインストール

https://s3.amazonaws.com/h2o-release/h2o/rel-kahan/10/index.html
 ここからダウンロード&インストールできます。

■いざ、操作〜データの取得〜

・ターミナルでシステムを起動しますが、ブラウザで操作するみたいです。
  初心者にも安心感たっぷりのUIでした。
 
 ・一番左のTry it!をクリックするとテスト用のデータが用意ある。

・CSVはuploadからインポートできるみたいです。

・いろいろと設定できるみたいですが、何をしなくてもよかったです。
 ダウンロードしたirisデータを選択して、そのままsubmit。

 ・データの入力が完了しインプットが完了したみたいです。
 iris.hexという名前で登録されたそう。

 ■いじってみる 〜簡易集計〜

  ・無駄なメニューが多くなくって本当にいいですね
    
  ・先ほど登録したデータを入力

   ・集計する変数を選択して、Submit
   ・集計結果が表示される

 

■さらにいじってみる 〜ディープラーニング〜

  
   ・ディープラーニングもデータ名と応答変数を指定するだけで
  分析できちゃう手軽さがいいですね。

   
・結果もすぐにポン!!




以上、手軽にできる分析ツールの紹介でした。
感想としてはとっても凄そうなツールですが、
正直まだよくわかんないですね。。
GLMとGLM2の違いとかとか。。

※インストール作業もろもろ、
 ご自己のお責任となりますので、
 実際にお試しする場合には
 くれぐれも十分おきをつけくださいませ。。

2014年2月10日月曜日

Rのパッケージインストールエラーについて (macOS Mavericks)

あたらしいパッケージをインストールしようとしたら、
stdlib.hが無いと怒られ、インストールがエラーで終わってしまい、
困ってしまいました。

たぶんmacだけ(しかも、mac portsからインストールした場合だけ?)
の症状らしいのですが、
OSをMavericksにアップデートしたら、
"Command Line Tools" もアップデートしないと
うまく連携してもらえないみたいです。

以下のリンク先に、詳しく書いてあります。

https://stackoverflow.com/questions/19622337/cant-update-macports-with-mac-os-x-mavericks

2013年12月12日木曜日

エクセルで重回帰分析した時にでてくる表について

重回帰分析はエクセルでできちゃうし、使い勝手が良くて
便利ですけど、分析結果ってイマイチわかんないですよね。

謎に表が3つも出てくるし、何を見たらいいかわかんないし。。

ということで、3つの表の役割をお伝えしながら、
数字を読み解く上で重要なポイントをお伝えします。

まず本題に入る前に・・・使用するデータについて

Rに入っているirisデータを使います。
これは、花びらとがくの大きさと種子の種類のデータで、
Rで「data(iris);iris」とコマンドを打つと出てきます。

種子の種類のデータは文字で入っているので、
ダミー変数化(0、1の変数)にしてあります。

※文字データを数値のデータに変換するのを
 ダミー変数化といったり、フラグを立てると
 いったりします。

分析方法

エクセルの分析ツールを使用します。
今回はYをSepal.Length、XをSepal.Lengthとverginicaを除くすべてのデータとしています。

念のため、図をはっておきます。


本題、謎の3つの表について

表ごとに解説します。
なお、こちらの表は、上記のirisデータを実際にエクセルで重回帰した結果です。


■1番目の表



この表では、おおまかに重回帰式の当てはまりの良さを把握できます。


「重相関 R」 「重決定 R2」は回帰式の当てはまりの良さを読み取ることができます。
1に近づくほど、当てはまりがいいと言われています。

この表で一番重要なのは「補正 R2」です。
これも、おなじく1に近い数字になるほど、当てはまりの言い回帰式と言えます。
「補正 R2」の利点は、説明変数の数を考慮して、あてはまりの良さを算出してくれる点です。
複数の重回帰式を出して、どれがいいかとモデルの比較をするときは、
この「補正 R2」で比較しておくと問題ないです。

もっと説明すると、
「重決定 R2」は、説明変数の数を増やすと自ずと増えます。
説明変数(Xの列の数)が増える分、関節が増えるの同じで、
関節が無数にある蛇のように、くねくねと目的変数(Y)に当てはまるように、
回帰式も対応していきます。
そのため、説明変数の数を考慮して、モデルの比較をする必要があります。


■2番目の表


この表は、重回帰式の信頼度を把握するものです。

もっというと、この表の意味は、
「回帰式のすべての係数が、0では無いかどうか」
を検証するための参考材料になります。

この表で一番重要なのは、一番右にある「有意F」です。

「回帰式のすべての係数が、0でありそうな」確率を表しています。
だいたい、5%未満(0.05未満)だったら、統計的に
「回帰式のすべての係数が、0では無い」と言えます。

有意Fが0に近ければ、近いほど、回帰式の信頼性は高いと言えます。

※とはいえ、有意Fが0.1だったら、重回帰式は無意味なのかといえば、
 そうでは無いので、あまり気にしなくていい表です。
 

■3番目の表



この表は重回帰式の係数を評価するものです。


最も重要なのは、「係数」と「P-値」です。
結論、この表は「P-値」が5%以下の係数にしぼってみる。
それで、正しい数字の読み取りができます。

長くなりますが、説明します。。。

まず、係数ですが、
値が大きいほどYに与えるインパクトが大きいことが読み取れます。

一方「P-値」は、係数の信頼性をはかるものです。
厳密にいうと、「該当の係数が0でない」であろう確率を表します。
これを意訳すると
「Yの変動要因になっているかいないか」を判断するものです。
なので、「P-値」はだいたい5%未満だと、該当の変数を重回帰式に適用しても良いと
読み取ることができます。


上記の2番目の表と同様に、5%未満だと、
統計的に「該当の係数が0でない」ということが言えます。

もっと説明すると、表の右から4番目と3番目に
下限95%、上限95%とありますが、
これは95%の確率で係数が取りうる限界値です。

実際、重回帰分析を他のデータでも、いくつか試してみると、
P値が5%以下の変数は上限と下限の間に0を含まず、
逆に5%以上の変数は上限と下限の間に0を含むことを確認できるかと思います。


※蛇足
 図の右端(右から2番目と1番目)にも下限95%、上限95%が
 ありますが、右から4番目と3番目と同じものです。
 実は、エクセルの重回帰分析を行う際にでてくる、
 ポップアップにカスタムで、上限・下限値を出せるものがあります。
 カスタム部分のデフォルトが95%になっているので、
 重複しているのですが、出すときは、99%にするとスマートかもしれないですね。

 赤枠の部分がそうです。


 念のため、どこのところを言っているのかも記しておきます。

 

まとめ

①表:当てはまりを見る
②表:回帰式の信頼性を確認する
③表:係数の値と信頼性を確認する

以上が、エクセルの重回帰分析で出てくる謎の3表の読み取り方です。

今回は、でてきたものの読み取り方の説明をしています。
実際に重回帰式をどうやってつくったら良いか?
とか、2番目の表などの分散分析表のちゃんとした使い方とかは、
多くの統計学の本に書いてあるので、参考にしてみて下さい。

※ ②表とか、③表の説明で信頼性を確認という言葉を使っていますが、
   統計学で言う信頼性はまた別の意味を含んでいる可能性があるので、
   厳密にこの記事を参考にはしないでください!
   あくまでも、エクセルの表の見方の参考情報としてご活用ください!


2013年12月4日水曜日

ワンランク上のABテストの検証〜統計を使ってLPを評価する〜 その2

前回の記事の最後で触れていますが F検定は分散を分析するものです。 

で、F検定で何をみるかといいますと、 ABテスト場合では、
 「日ごとのCV数の揺れの大きさ」と 「誤差の揺れの大きさ」を比較します。

 「日ごとのCV数の揺れの大きさ」 < 「誤差の揺れの大きさ」 と検出されたときは、【ABテストの結果に違いはなし】という結果に。 

一方、 「日ごとのCV数の揺れの大きさ」 > 「誤差の揺れの大きさ」 と検出されたときは、【ABテストの結果に違いがあり】という結果になります。

 これがF検定をやって分かることです。
なお、後者の場合が、統計学の教科書によく乗っている 「帰無仮説が棄却されて、対立仮説を採用する。」という話です。 

※数学的な話(結果だけ知りたいという方は読み飛ばしてください)

この大きさをどうやって判断するのかというと、 F分布の値を使って出します。 「日ごとのCV数の揺れの大きさ(分散)」 ÷ 「誤差の揺れの大きさ(分散)」  がF値です。

この値が大きいければ、大きいほど 「日ごとのCV数の揺れの大きさ」が大きいということなので、 【ABテストの結果に違いがあり】という結果が導かれます。

その基準となるのが、F分布になります。 それで、検定をやって注意しなければならないのは、 AとBの優劣はまだわかっていないという点です。

 優劣を判断するには「推定」という分析でみます。 

まとめると  
・F検定は、【違いがある】か【違いを無いか】をみる。  
・Aが優れているか?Bが優れているか?を見るには推定をおこなう。 

という点です。

次回は推定について触れます。 エクセルのシートはまだ先になりそうです。。

2013年10月21日月曜日

ワンランク上のABテストの検証〜統計を使ってLPを評価する〜

ABテストでLPを評価するときに、CV数やCVRなどの指標をもとに
大小関係で比較するのが一般的です。

たとえば、流入数がサイトAもサイトBも同じという条件のもとで、
一週間のCVの合計がサイトAで50、サイトBで53だった時

------------
サイトAのCV数:50  <  サイトBのCV数:53
なので
サイトBの方が効率的!
-------------

と、するレポートを見る機会が多いと思いますが
本当にサイトBが効率的なサイトと言えるのでしょうか?

そんな時は検定をつかって、
統計的にBが効率的かどうかを検証しましょう。

カイ2乗検定で、比較する方法はたくさん記事があるみたいなので、
今回は、F検定で比較する方法について考えてみたいと思います

で、F検定とは分散を比較する検定です!

#補足1#
分散て?→データの散らばり具合を表す指標です。
分散が0の分布はひとつの値に集中している分布です。
それに対して、分散が大きくなると、大きくなだらかな
分布を形成します。

#補足2#
分布って?→ヒストグラムのことです。
データを集めて、集計をすると、
山なりのヒストグラムができます。
これを分布といいます。

で、

F検定をすると何がわかるかというと、
2つの分布に分散の違いが有るか無いかをはっきりさせられます

もっというと

分散の違いをはっきりさせられると何がいいかというと、
誤差以外の”何らかの変動要因がある”ということがわかります

なので、今回の場合、
サイトAとサイトBのCV数をもとにF検定を行うと、
どちらかにCV数を向上させる(減少させる)要因が存在しているかどうかが分かります。

具体的にエクセルでやる方法については、また後日記載します!

#
実は、F検定では分散の違いしかみれません。
どっちが優れているか(=CV数を多く獲得できているか)を見るには
区間推定という分析が必要となります。

これも後日記載します!

2013年9月24日火曜日

因子分析とクラスター分析のやり方~分析報告書作りのポイントもあわせて~

最近は、SASとか難しい記事が多くなっていたので志向を変えて。。
今回は報告書の作り方というか、ポイントをメモしておきます。
報告書を作る作業が減ったもので、忘れそうということもあり。。

で、本題に。。
リンク先PDFの大広さんの資料は報告書のポイントが詰まっていると関心してしまいました。。

「スマート主婦」調査分析レポート
http://www.daiko.co.jp/ja/portfolio/database/life_report/report_130212.pdf
http://daikodmsoken.jp/wp-content/uploads/2013/02/reserch_vol2.pdf
https://www.daiko.co.jp/dwp/wp-content/uploads/2014/02/report_130212.pdf

リンク先のレポートを参考にしてしまえば、
調査報告書を、マーケターとして一人前にかけてしまうと思われるくらい
参考になるかと思います。

PDFに詰まっている報告書のポイントと
あわせて、因子分析→クラスター分析のやり方も簡単に解説します。

<以下解説>--------------------------------------------

リンク先PDFと対応させてご覧いただければと思います。

■2P<はじめに>
・背景
・課題
を記して、報告書が何に役立つかを提示します。

■3P<調査概要>
・調査目的
・調査概要
を記して、報告書(調査)で何をやったを提示します。

■4P~7P<サマリー>
調査目的に対応する形で、
分析結果を分かりやすくまとめます。

■8P<因子分析>
アンケートデータを因子分析にかけて、
因子を抽出しています。

【因子分析の流れ】

-データ-
このレポートはどんなデータわかりませんが
分析するデータは、だいたい各設問を5段階で評価しているものを使います。

設問例)
問1:果物が好きですか。
1:とてもよくあてはまる 2:だいたいあてはまる、・・・

データ例)
Aさん 問1:3 問2:5
Bさん 問1:1 問2:3

-計算-
で、5段階評価のデータを
SPSSとかで因子分析をかけると、

・固有値
・因子負荷量 ・・・8Pにあるもの
・因子得点

などが出てきます。

-結果の解釈-
計算結果がでてきたら、
まず因子として採用するものを選びます。
選び方は、固有値がだいたい1以上のものか、
累積寄与率が60%以上になる因子までを採用します。

で、採用する因子が決まったら、
因子負荷量を8Pのようにならべます。

※リンク先のPDFでは、
 黄色く記載されているところ以外は空白になっていますね。。
 0なのか、見づさの軽減のためなのかわかりませんが。。

次に因子負荷量をみながら、
それぞれの因子に名前を付けていきます。
だいたい数値が大きいものに○をつけていって、
因子の特徴を理解し、因子の名前をつけます。

この辺りが、マーケターのセンスが光る部分ですね。笑
ただし、特徴が理解できなければ、外してしまってもいいかと思います。
理解できないと、報告書として説明することができないので。。。

■10P<クラスター分析>
因子分析の結果をもとにクラスター分析をして、
クラスターごとの因子得点をレーダーチャートで表しています。

【クラスター分析の流れ】

-因子分析の結果の引き継ぎ-
採用した因子で、
モニターごとの因子得点を計算します。

データ例)
Aさん 因子1:3 因子2:5
Bさん 因子1:4 因子2:1


-クラスター分析の計算-
因子得点が計算できたら、クラスター分析をします。

 出したいクラスターの数が決まっていなければウォード法を、
 決まっていればk-means法を

使えばいいかと思います。

ウォード法をやると、
デンドログラムというトーナメント表のようなグラフが出力され、
クラスターを最小限に細かく分けるパターンから、
最大限にくくってしまうパターンまで表されます。

最初は、ウォード法などでデンドログラムを見ながら
どれくらいにまとめようかと検討するのがいいかと思います。

-クラスター分析の解釈-
で、どこできったらよいかというところは、

 ・デンドログラムの直線が長くなっているところ

がだいたい良いかと。

-クラスターごとの特徴の抽出-
クラスターが抽出できたら、
それぞれの因子得点の平均で比較分析(コメントづけ)を行います。

■12~14P<クロス集計表>
・必ずクロス集計表にはN数を表記する
・N数が30未満の場合には注釈で参考情報であることを表記する
・構成値が極端に多い部分や、少ない部分に着目してコメントする
 (=データの特徴がなるべく浮き彫りになるようにコメントする)

・表頭がSAのときは帯グラフ:12~14P
 (SAというのはシングルアンサーの略です。
 すべての人がダブらないので、帯グラフで表すことができます。
 例えば、年代とかはSAです。年代は1人で2つの値をとることはできません。
 ※サバを読んでるとかはまた別の話です。)

・表頭がMAのときは折れ線(or縦棒):15~17P
 (MAというのはマルチアンサーの略です。
 人によって解答が重複することがあるので、折れ線で表すことが多いです。
 また、15Pのように、見やすさ向上のため多い順に表頭を並べることがあります。)

--------------------------------------------

以上が、因子分析とクラスター分析を使った調査報告書のポイントです。



2013年9月3日火曜日

SASデータセットを高速でRに取り込むときの流れ

前回sas7bdatをRに入れるという記事を作ったのですが、
こんなのがありました。

■Macros communicate SQLite and SAS without ODBC
http://www.sasanalysis.com/2011/05/macros-communicate-sqlite-and-sas.html

SASから、直接SQLiteを吐き出してくれるマクロです。
その逆も出来るみたいですよ。
こんな便利ものを無料で提供してくださるのは本当にありがたいですね。
ということで、SAS(SQLite)→Rと1回で取り込みができちゃいます。

手順は下記の通りです。
※いつもなら、Macなのですが
 SASということでWindows環境下での作業手順です。

0.sqlite3.exeのあるファイルへパスを通す。
 #環境変数でググるとパスの通し方が書いてあります。

1.上記リンク先のマクロを読み込む。
 #sqlite3へのパスが通ってないとちゃんと動作してくれないので注意。

2.データセットを作ってマクロを実行。
 #SASでのマクロの呼び出し方は、こんなかんじかと。
 
 %sas2sqlite(sastable = 【吐き出すデータセット名】, path = 【吐き出す先のパス】, database = 【sqliteデータの名前】)

あとはR側で、RSQLiteパッケージを使って取り出すだけです。

念のため,R側での操作方法を記載しておくと、

 
library(RSQLite)
drv <- dbDriver("SQLite")
con <- dbConnect(drv, dbname="【吐き出す先のパス】/【sqliteデータの名前】")
x <- dbGetQuery(con, "select * from 【吐き出すデータセット名】;")
head(x)  #表示して確認