Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Rで売上予測のデモ(回帰分析)

5,818 views

Published on

2015/12/22 第八回雑談会で発表した内容です。

Published in: Data & Analytics
  • Be the first to comment

Rで売上予測のデモ(回帰分析)

  1. 1. Rで売上予測のデモ 第⼋回 雑談会 2015/12/22 成⽥裕美
  2. 2. 2 あんただれ︖ • いわゆる統計&分析屋 – 専⾨統計調査⼠ – SAS認定プロフェッショナル ビジネスアナリスト – R, SAS, SPSSなんでもやります • ⼈事・組織系コンサルファーム出⾝ • 三沢市出⾝&在住/2016年1⽉ 開業予定 ‒ ⼦連れ出戻りUターンです♡ 成⽥ 裕美(なりた ひろみ)
  3. 3. 3 データ分析の⽬的 • データを要約する(記述統計、可視化) • 仮説を検証する(統計的仮説検定) • 仮説を創造する(データマイニング) • 未来を予測する(回帰分析、機械学習) ↑今回はコレ
  4. 4. 4 売上予測の重要性 • 売れ残る ⇒ ロスの発⽣ • 売れすぎる ⇒ 機会の損失 過去の実績から未来の売上を予測 経営資源の最適化 根拠(データ)に基づく販売戦略 売れ残っても 売れすぎても 致命傷
  5. 5. 5 統計解析⽤⾔語 R • なんてったってタダ♡ • 世界3⼤統計ソフトウェアの1つ    (R, SAS, SPSS) • オープンソースなので⽇々進化する Rってスゴイんだぜ︕︕︕ 昔は⼤⾦払わないと出来なかった分析がタダで出来ます
  6. 6. 6 Rのデモ ごぼうビールの消費量を予測する 月 平均気温 消費量 百ℓ 1 5.7 2.41 2 6.4 3.91 3 7.9 4.32 4 13.9 5.55 5 19.7 5.63 6 21.6 6.23 7 27.9 8.34 8 29.1 8.39 9 28.1 7.33 12 8.9 4.77 11 13.2 4.95 10 18.5 5.51
  7. 7. 7 散布図&相関係数 相関係数 =0.95 気温が上がるほど 消費量も増える 気温と消費量の 間には強い正の 相関がある
  8. 8. 8 これが回帰分析 すべてのデータからの距離が 最も短くなる予測式を求める
  9. 9. 9 消費量 = 0.19(百ℓ)× 気温(℃) + 2.4 気温が1℃上昇すると、平均消費量が19ℓ増える 回帰分析の結果(1)
  10. 10. 10 回帰分析の結果(2) 切⽚と気温が消費量を予測する上で意味が あるのかを、検定という⼿法で検証 2つとも最⾼ランクの★3つなので、予測の上で ほぼほぼ有効だということがいえる。
  11. 11. 11 回帰分析の結果(3) 決定係数R²は予測式の当てはまりの良さを 表す。(0に近いほど当てはまりが悪く、 1に近いほど当てはまりが良い) 今回0.9なので、だいぶ当てはまりが良い、 つまり精度の⾼い予測式だといえる。
  12. 12. 12 信頼区間と予測区間 ⾚︓信頼区間 予測式の信頼幅 を表します 緑︓予測区間 予測値の取りう る幅を表します データを取り直して同じ分析を 繰り返したとしたら、100回の うち95回はこの範囲内に予測 式・予測値が収まると考えられ ますよ、という意味 ⿊︓予測式
  13. 13. 13 でもね。。。 • たった1つの変数から精度の⾼い予測式が 出来ることは、⾮常にまれ • 実際は、消費量に影響する様々な変数を複 数使って予測するケースがほとんど(重回 帰分析)
  14. 14. 14 最⼤電⼒ (千kw) = 16770.6                 +(181.1 × 最⾼気温)+(125.0 × 最低気温)              - 123.7 (晴) + 101.1 (⾬)     + 6384.6 (⽉) 6269.2 (⽕) 6276.4 (⽔) 6156.9 (⽊) 5942.3 (⾦) 2427.8 (⼟) - 1674.7(⽇祝)- 5614.5 (年末年始)        重回帰分析ってこんな感じ〜
  15. 15. 15 重回帰分析の注意点 • 予測するための変数をたくさん投⼊すれば するほど、理論上は予測精度が⾼くなる • でも変数が増えすぎると、予測式が安定し なくなってヘンテコな係数が出たりする (多重共線性に気をつけろ︕) • いかに少数精鋭の変数を選び出してシンプ ルで美しいモデルを作れるか、ここはまさ にアナリストの腕の⾒せどころ
  16. 16. 16 重回帰分析の発展形 • 今回お話したのは、⼀番単純な線形モデル • 曲線関係を表したり、もっと複雑な関係 (交互作⽤とか)をモデルに組み込んだり、 ⼈⼯知能の⼿法を取り⼊れたりして、デー タ分析の世界はどんどん進化 • でも基本的な原理や考え⽅は共通している
  17. 17. 17 参考︓デモに使⽤したRのコード #---ごぼうビールの売上データ ⽉ <- c(1:12) 気温 <- c(5.7,6.4,7.9,13.9,19.7,21.6,27.9,29.1,28.1,18.5,13.2,8.9) 消費量 <- c(2.41,3.91,4.32,5.55,5.63,6.23,8.34,8.39,7.33,5.51,4.95,4.77) beer <- data.frame(⽉,気温,消費量); beer #---これを散布図にしてみると p1 <- ggplot (beer, aes(x = 気温, y = 消費量)) p1 + geom_point(size = 5)+ labs(title = "気温とごぼうビール消費量の散布図") #---相関係数を算出する round(cor(beer$消費量 , beer$気温),2) #---回帰分析を実⾏してみよう beer.lm <- lm (消費量 ~ 気温, data = beer);summary(beer.lm) #---実測値と予測値を⽐べてみる 実測値 <- beer[,3] ; 予測値 <- round(predict(beer.lm),2);(data.frame(実測値, 予測値)) #---予測値を計算しよう new <- data.frame (気温 = 20) #来⽉の平均気温が20度という予報が出たと仮定 predict(beer.lm, newdata = data.frame(気温 = 20)) #---信頼区間と予測区間 #(conf <- predict(beer.lm, new_dat, interval="confidence")) #信頼区間 #(pred <- predict(beer.lm, new_dat, interval="prediction")) #予測区間 #---信頼区間と予測区間のグラフ new1 <- data.frame("気温"=seq(5,30,0.2)) conf <- predict(beer.lm, new1, interval="confidence") pred <- predict(beer.lm, new1, interval="prediction") matplot(new1$気温, cbind(conf), lty=c(1,2,2), col=c(1,2,2), type="l", xlim=c(5,30), ylim=c(2,10), xlab="気温", ylab="消費量") par(new=T) matplot(new1$気温, cbind(pred), lty=c(1,2,2), col=c(1,3,3), type="l", xlim=c(5,30), ylim=c(2,10), xlab="気温", ylab="消費量")
  18. 18. 18 Fin ご清聴ありがとうございました。 (*´ω`)

×