第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜

5,390 views

Published on

2014年4月期 AITCオープンラボ

第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜

  1. 1. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 第2回 R言語で始めよう、データサイエンス! (ハンズオン勉強会) ~相関分析による需要予測編~ 2014年4月期 AITCオープンラボ 2014/04/28
  2. 2. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. •菅井 康之 •  https://www.facebook.com/yasuyuki.sugai 株式会社イーグル所属 •AITC 運営委員※ •AITCクラウド・テクノロジー活用部会 •サブリーダー ※先端IT活用推進コンソーシアム(AITC)は XMLコンソーシアムの後継団体です 2 自己紹介 よろしくおねがいしまーす
  3. 3. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. Java コンソーシアム XML部会 2000/07 設立宣言   2001/06~2010/03実活動  2010/03~2010/09  2010/09/08設立 先端IT活用推進コンソーシアム Advanced IT Consortium   to Evaluate, Apply and Drive ・ 企 業 の 枠 を 超 え た 活 動                             ・ 一 社 で は で き な い 活 動 ( 実 証 実 験 等 )         ・ 利 活 用 推 進 の た め の 提 案 ・ 提 言             ・ 情 報 と 知 見 の 提 供               ・ 成 果 物 の 公 開 Windows コンソーシアム 日本経営協会 XMLフェスタ
  4. 4. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 企業における先端ITの活用および   先端ITエキスパート技術者の育成を目的とし、      もって、社会に貢献することを目指す非営利団体 設  立 : 2010年9月8日(会期: ∼2016年8月31日) 会 長 : 鶴保 征城 (IPA顧問、HAL校長)    会 員 : 法人会員&個人事業主、個人会員、学術会員       特別会員 (産業技術総合研究所、気象庁、 消防研究センター、防災科学技術研究所) 顧 問 : 稲見 昌彦 (慶応義塾大学大学院 教授)       和泉 憲明 (産業技術総合研究所 上級主任研究員)    萩野 達也 (慶応義塾大学 教授)   橋田 浩一 (東京大学大学院 情報理工学系研究科 教授) 丸山 不二夫(早稲田大学大学院 客員教授)     山本 修一郎(名古屋大学大学院 教授) BizAR顧問: 三淵 啓自 (デジタルハリウッド大学大学院 教授)        川田 十夢  (AR三兄弟 長男) 先端IT活用推進コンソーシアム
  5. 5. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 第4期活動対象分野 realvirtual コンテキスト 人 メタ データ モノ コト コンテキスト コンピューティング クラウド コンピューティング AR ユーザーエクスペリエンス ソーシャル ナチュラルユーザー インタフェース
  6. 6. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. AITCオープンラボ<今まで開催したAITCオープンラボ> ■2013年11月■ R言語で始めよう、データサイエンス!(ハンズオン勉強会) ∼ R言語の基礎から機械学習・ビジュアライゼーション事始め ∼  ■2013年12月■ セマンティックWeb技術に触れてみよう!RDF/SPARQLハンズオン勉強会 ∼ オープンデータからLinkedDataまでを総ざらい ∼ ■2014年01月■ 簡単に仮想環境を構築したい人のためのVagrant&Chef勉強会 ■2014年02月■ デジタルガジェット祭り ■2014年03月■ 【再演】R言語で始めよう、データサイエンス!(ハンズオン勉強会) ∼ R言語の基礎から機械学習・ビジュアライゼーション事始め ∼  ■2014年04月■ ← NEW!! 第2回 R言語で始めよう、データサイエンス!(ハンズオン勉強会) ∼ 相関分析による需要予測編 ∼ 
  7. 7. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 本日のハンズオン内容について  3月20日に開催した気象庁XML利活用 セミナーでお話させて頂いた、「気象庁 XMLを利用した需要予測の可能性」の 内容をハンズオン形式で演習します。  ↓基ネタのスライドはこちらで公開↓   http://xml.kishou.go.jp/seminar.html   →09_気象データを利用した需要予測[pdf形式:3,347KB]
  8. 8. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 本日のテーマ • 企業で蓄積されるデータは日々増加し、何 らか利活用出来ないか模索する機会が増 えているかと思います • 一方では、オープンデータが推進されて利用 可能なデータの種類も豊富になってきました • データ利活用の一つのアプローチとして、保 持するデータと他のデータとの間に、相関が あるか分析し、予測などの様々なケース に適用することが考えられます というわけで、相関分析を 実際に行ってみましょー
  9. 9. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 相関とは・・・ • 2つの変数間に規則的に変化していく性 質を持つデータ • 例えば、ある一方の値が大きくなるほどもう 一方の値も大きくなる(正の相関)、または ある一方の値が大きくなるほどもう一方の 値は小さくなる(負の相関)などの関係があ る状態 • ある一方の変数の値が特定出来ると、 もう一方の値を推測出来るという性質 を持つ そんな感じのことを実際に 体感して行きたいと思います
  10. 10. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 本日扱うデータ • Web上に公開されていて、常に利用できる データとして、以下の二つのデータを利用し ます • 東京電力の電力使用量 http://www.tepco.co.jp/forecast/html/ download-j.html • 気象庁の統計情報の気温実績値 http://www.data.jma.go.jp/gmd/risk/obsdl/ index.php
  11. 11. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. • 電力の一日の使用量は、気温と関連があ るという仮説を検証する • データを可視化しながら、アドホックに分析 を行い、電力使用量と気温の相関を求め、 予測モデルを検討する 本日扱うデータ では、実際にやってみましょ
  12. 12. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. •RとR Studioをインストールして頂け てますか?? •Rはこちらから •http://www.r-project.org/ •R Studioはこちらから •http://www.rstudio.com/ide/download/desktop 8 環境の確認
  13. 13. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. •コマンド全部打つのは大変、コピペ したいという方はこちらに一時的に PDFで置いておきました •https://dl.dropboxusercontent.com/u/ 8148946/AITC/20140428_R_HandsOn.pdf •コピペは一行ずつでお願いします。 •たぶんハンズオン終わったら見えなくなります。 9 環境の確認
  14. 14. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. R Studioの見方(おさらい) • R の IDE環境 コマンドの実行履歴 アクティブなデータ セット グラフのプロット パッケージ管理 コマンドライン コード・アシスト付き データView ソースEdit
  15. 15. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. Rの基礎(おさらい) • 変数は自由に宣言可能 • 代入は<-で行う • データの基本はベクトル。データフレームが扱 えるようになると色々出来る • 関数は必要になった時に調べる > var <- 12 + 22 > var <- c(1, 2, 3, 4, 5, 6) > var <- c(1:6) > var <- data.frame("aa" = c(1,2))
  16. 16. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 可視化 • 今回行う可視化は、2通りの手法で行いま す –Rで良く利用するggplot2を利用した可視 化 –Web上でインタラクティブに操作出来る rChartsを利用した可視化 ※rChartsについては、下記スライドを参照く ださい http://www.slideshare.net/yasuyukisugai/r- charts
  17. 17. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 3 •気温と電力使用量の •相関分析編
  18. 18. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.  まずは電力使用量と気温に相関がある かを確認して行きます。  データをRに取り込んでデータを可視化し ていきます。
  19. 19. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 東京電力の電力使用量 • 東京電力の2013年の電力使用量は以下のURLか らダウンロード可能 • http://www.tepco.co.jp/forecast/html/images/ juyo-2013.csv • Rにデータを展開 – URL指定で直接読み込む(文字列として読みこむだけ) – DataFrameに展開(ヘッダを除くデータ部のみ) – 列名を付与 > tmp<-readLines("http://www.tepco.co.jp/forecast/html/images/juyo-2013.csv") > View(tmp) > electric<-read.csv(textConnection(tmp), header=F, skip=3) > names(electric) <- c("date", "time", "value") > View(electric)
  20. 20. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 東京電力の電力使用量 • こんな感じのデータが出来上がりました - date: 対象の日付 - time: 1時間辺りのデータの対象時間 - value: 1時間辺りの電力使用量
  21. 21. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 気象統計情報の最高気温、最低気温 • 気象庁の統計情報は手動でダウンロードする必要 あり。以下のURLから、2013年の東京都の最高気 温、最低気温をダウンロードする • http://www.data.jma.go.jp/gmd/risk/obsdl/index.php • R上にデータを展開 – ダウンロードしたファイルを以下の関数の実行結果の場所に配 置する(Rが動作する作業ディレクトリ) – DataFrameとしてRに読み込む(ヘッダを除くデータ部のみ) – 必要な列のみ抽出 – 列名を付与 > getwd() > tmp<-read.csv("data.csv", header=F, skip=5) > temp<-tmp[c(1,2,5)] > names(temp) <- c("date", "max", "min") > View(temp)
  22. 22. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 気象統計情報のダウンロード詳細 • 「地点を選ぶ」で東京を選択①
  23. 23. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 気象統計情報のダウンロード詳細 • 「地点を選ぶ」で東京を選択②
  24. 24. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 気象統計情報のダウンロード詳細 • 「項目を選ぶ」で日別値、日最高気温、日最低気 温を選択
  25. 25. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 気象統計情報のダウンロード詳細 • 「期間を選ぶ」で連続した期間で表示する、2013年1 月1日から2013年12月31日までの日別値を表示を 選択
  26. 26. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 気象統計情報のダウンロード詳細 • CSVファイルをダウンロードボタンを押下する
  27. 27. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 気象統計情報の最高気温、最低気温 • こんな感じのデータが出来上がりました - date: 対象の日付 - max: 最高気温 - min: 最低気温
  28. 28. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量の一日毎のピーク値算出 • 日付文字列を日付型に変換 – 電力使用量 • 電力使用量を時間別->日別に集約 – 日別にピーク値(MAX)を算出(SQLのグループ関数的な) – 列名を付与 > electric<-transform(electric, date=as.Date(date)) > electric2<-aggregate(electric$value, list(electric$date), max) > names(electric2)<-c("date", "value") > View(electric2)
  29. 29. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量と気温を日別に結合 • 日付文字列を日付型に変換 – 最高気温、最低気温 • 電力使用量と気温を結合 – 日付("date"列)の一致するデータを結合する > temp<-transform(temp, date=as.Date(date)) > data<-merge(temp, electric2, by="date") > View(data)
  30. 30. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量と気温 • こんな感じのデータが出来上がりました - date: 対象の日付 - max: 最高気温 - min: 最低気温 - value: 1日の電力使用量ピーク値
  31. 31. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 可視化ライブラリ • 今回の可視化はggplot2を主に使用していきます – ライブラリのインストール – ライブラリのロード • また参考としてrChartsでの可視化も行っていき ます – ライブラリのインストール – ライブラリのロード > install.packages("ggplot2") > library(ggplot2) > install.packages("devtools") > library(devtools) > install_github("rCharts", "ramnathv") > library(rCharts)
  32. 32. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量を可視化 • 電力使用量をプロット – 散布図 – 折れ線グラフ – 期間を絞り込んで折れ線グラフ (6月1日から6月10日) > qplot(data=data, x=date, y=value) > qplot(data=data, x=date, y=value, geom = "line") > data2<-data[as.Date("2013/06/01")<=data$date & data$date<=as.Date("2013/06/10") , ] > qplot(data=data2, x=date, y=value, geom = "line")
  33. 33. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量と気温 • 散布図では、夏場と冬場に電力使用量が高い傾 向にあることが分かる
  34. 34. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量と気温 • 折れ線グラフでは、同じ季節でも日によって多くのば らつきがあることが分かる
  35. 35. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量と気温 • 日付を絞り込むことで、ばらつきは土日と平日の違 いということが分かる
  36. 36. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量を可視化 • 電力使用量をインタラクティブに可視化 – 折れ線グラフ > p <- nPlot(value ~ date, data = electric2, type = 'lineWithFocusChart') > p$xAxis( tickFormat="#!function(d) { return d3.time.format('%m/%d')(new Date( d * 86400000 )); }!#" ) > p$x2Axis( tickFormat="#!function(d) { return d3.time.format('%b')(new Date( d * 86400000 )); }!#" ) > p$chart(tooltipContent = "#! function(key, x, y, e, graph){ return 'date: ' + d3.time.format('%Y/%m/%d')(new Date( e.point.date * 86400000 )); } !#") > p$set(width=1000, height=500) > p
  37. 37. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量と気温 • 見た目はggplot2と同様だけど・・・
  38. 38. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量と気温 • 任意の期間に容易に絞り込むことが可能
  39. 39. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 気温を可視化① • 最高気温をプロット – 散布図 – 折れ線グラフ • 最低気温をプロット – 散布図 – 折れ線グラフ > qplot(data=data, x=date, y=max) > qplot(data=data, x=date, y=max, geom="line") > qplot(data=data, x=date, y=min) > qplot(data=data, x=date, y=min, geom="line")
  40. 40. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 気温を可視化② • 最高気温と最低気温を纏めてプロット – reshape2に含まれているmelt関数によってデータを変 形(reshape2自体はggplot2と一緒にインストールさ れる) – 折れ線グラフでプロット ・ ggplot2の結果を画像保存したい場合は・・・ – ggsaveを使用してpng形式で保存(拡張子で自動判別) ※作業ディレクトリ(getwd())に出力される > library(reshape2) > tmp<-melt(data=data, id.vars=c("date"), measure.vars=c("max", "min")) > View(tmp) > qplot(data=tmp, x=date, y=value, colour=variable, geom="line") > p<-qplot(data=tmp, x=date, y=value, colour=variable, geom="line") > ggsave("test.png", p)
  41. 41. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量、最高気温の相関を可視化 • 電力使用量と最高気温をプロット – 電力使用量と最高気温をx, y軸で二次元上に > qplot(data=data, x=max, y=value) • 平日と土日とで使用量に ばらつきがあったため、 分けて考える必要がある
  42. 42. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量、最高気温の相関を可視化 • 平日と土日の分離 – 日付から曜日を判定 – 曜日から平日or土日を判定 – 平日、土日を区別してプロット > data<-transform(data, day_of_the_weekday=weekdays(date)) > View(data) # ※Windowsだと文字化けするかも?その場合はViewを使わないで data とだけ 実行 > data<-transform(data, week_class=ifelse(day_of_the_weekday%in %c( "土曜日","日曜日"),"weekend","weekday")) > View(data) > qplot(data=data, x=max, y=value, colour=week_class)
  43. 43. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量、最高気温の相関を可視化 • 平日(weekday)のなかでも、まだばらつきがある
  44. 44. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量、最高気温の相関を可視化 • 前スライドで左下に丸をつけた範囲のデータを絞り込む – 最高気温20度未満、電力使用量3200未満のデータ > data[data$max<20 & data$value<3200,] • 年末年始と、2013年のカレンダーから GW期間ということが判明 平日ではなく、祝祭日に分類出来る
  45. 45. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量、最高気温の相関を可視化 • 祝祭日の判定追加 祝祭日はcsvファイルを別途用意したので、それを使用 (https://dl.dropboxusercontent.com/u/8148946/AITC/ holiday.csv) – 平日、土日、祝祭日をそれぞれ判定 – 平日、土日、祝祭日+αを区別してプロット > holiday<-read.csv("holiday.csv") > holiday<-transform(holiday, date=as.Date(date)) > data<-transform(data, week_class=ifelse(day_of_the_weekday%in %c( "土曜日","日曜日"),"weekend",ifelse(date%in%holiday $date,"holiday","weekday"))) > View(data) > qplot(data=data, x=max, y=value, colour=week_class)
  46. 46. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量、最高気温の相関を可視化 • 平日、週末、祝祭日とで分類することができた • 祝祭日で一日だけ電力消費量が平日を上回ってい るが、これは成人の日に記録的な大雪が降った日
  47. 47. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量、最高気温の相関を可視化 • 平日データのみ絞り込み – それぞれデータの分布が異なるため、区別して分析す る必要がある – 今回は平日データの分析を実施するため、平日のみ 抽出する – 平日だけでプロット > weekday_data=data[data$week_class=="weekday", ] > View(weekday_data) > qplot(data=weekday_data, x=max, y=value)
  48. 48. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量、最高気温の相関を可視化 • 最高気温と電力使用量の関係では、25度を上回る と使用量が増加し、また20度を下回っても使用量が 増加している(20度から25度が最適な温度?)
  49. 49. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量、最高気温の相関を可視化 • 相関をインタラクティブに可視化 – ここまで行ってきた最高気温と使用量の関係をイン タラクティブに可視化する > p<-nPlot(value ~ max, data = data, group = "week_class", type = "scatterChart") > p$chart(showDistX = TRUE, showDistY = TRUE) > p$chart(tooltipContent = "#! function(key, x, y, e, graph){ return 'date: ' + d3.time.format('%Y/%m/%d')(new Date( e.point.date * 86400000 )); } !#") > p$set(width=1000, height=500) > p
  50. 50. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量、最高気温の相関を可視化 • やはり見た目はggplot2と同じように見えるけど・・・
  51. 51. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量、最高気温の相関を可視化 • データのフィルタリングやツールチップによる付加情報 の表示が行える
  52. 52. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量、最高気温の相関を可視化 • 平日25度を上回るデータのみ絞り込み – 平日の25度を上回るデータの抽出 – 平日の25度を上回るデータだけでプロット > weekday_data2=weekday_data[weekday_data$max>25,] > View(weekday_data2) > qplot(data=weekday_data2, x=max, y=value)
  53. 53. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量、最高気温の相関を可視化 • 右上がりに直線上にデータが分布している 最高気温が大きくなるほど、使用量が増加する正の 相関にあるといえそう
  54. 54. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量、最高気温の相関を可視化 • 実際にどれくらい相関関係にあるのか? – 相関の強さを調べる指標として、相関係数が存在す る – ±1 に近ければ近いほど、相関が強く、0に近いほど相 関は弱い – ±1 = 一直線にデータが存在 相関係数 相関の強さ -0.2∼0 or 0∼0.2 相関無し -0.4∼0.2 or 0.2∼0.4 弱い相関 -0.7∼0.4 or 0.4∼0.7 中間の相関 -1∼0.7 or 0.7∼1 強い相関
  55. 55. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量、最高気温の相関を可視化 • 相関係数の算出 – 25度を上回るデータに対して、電力使用量、最高気温、最低気 温の相関係数を求める – 電力使用量と最高気温の間では、相関係数が0.94と強い相関 があることがわかる – 最低気温とも相関がある – ちなみに、2変数で求める場合 > cor(weekday_data2[c("value", "max", "min")]) > cor(x=weekday_data2$value, y=weekday_data2$max)
  56. 56. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量、最高気温の相関を可視化 • 回帰分析 – 最高気温と電力使用量との間に強い相関がある事がわ かった – 最高気温が分かれば、電力使用量もある程度予測出 来そう – 回帰分析によって、最高気温から電力使用量を求める 直線(数式)を導きだすことが出来る – 求める値を目的変数(この場合、電力使用量)、求める 際に使用する値を説明変数(この場合、最高気温)と 呼ぶ
  57. 57. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量、最高気温の相関を可視化 • 回帰直線を求める – 最高気温から電力使用量を予測する回帰直線を求め る – 求めた値の参照 – result.lmは実績値を基にした予測モデルとして利用する > result.lm<-lm(formula = value ~ max, data = weekday_data2) > summary(result.lm)
  58. 58. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量、最高気温の相関を可視化 • 求めた値から、回帰直線の切片と傾きを得る • 次の結果から、電力使用量は以下の数式で求めら れることが分かる 電力使用量 = -463.545 + 最高気温 x 152.937 • t値なども参照可能
  59. 59. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量、最高気温の相関を可視化 • ggplot2でも回帰直線を求めることが可能 > qplot(data=weekday_data2, x=max, y=value)+stat_smooth(method="lm") 切片 傾き
  60. 60. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量、最高気温の相関を可視化 • 予測モデルから値を割り出す – 予測モデルから信頼区間を割り出す – 予測モデルから予測区間を割り出す – fit: 推測値、 lwr: 区間の下端、upr: 区間の上端 – 信頼区間: 推定平均の95%推定区間 – 予測区間: 推定データの95%推定区間 • 新たに発生するデータに対する推測を行う場合は、予測区間 を利用することでデータのばらつきを考慮して予測を行う > result.con<-predict(result.lm, weekday_data2, interval="confidence") > result.con > result.pre<-predict(result.lm, weekday_data2, interval="prediction") > result.pre
  61. 61. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量、最高気温の相関を可視化 • 信頼区間、予測区間を描画する① – サンプルデータとして、25度から40度まで0.1度区切りの 最高気温データを作成 – 予測区間を算出し、サンプルデータに結合(横に追加) – 信頼区間を算出し、サンプルデータにさらに結合 – 列名を付与 > sample<-data.frame("max"=c(250:400)/10) > sample.pre<-predict(result.lm, sample, interval="prediction") > tmp<-cbind(sample,sample.pre) > sample.con<-predict(result.lm, sample, interval="confidence") > tmp<-cbind(tmp,sample.con) > names(tmp)<-c("max", "pre_fit", "pre_lwr", "pre_upr", "con_fit", "con_lwr", "con_upr")
  62. 62. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量、最高気温の相関を可視化 • 信頼区間、予測区間を描画する② – データ形式の変換 – 基データも変換、サンプルデータに結合(下に追加) – 散布図として描画する > tmp<-melt(data=tmp, id.vars=c("max"), measure.vars=c("pre_fit", "pre_lwr", "pre_upr", "con_fit", "con_lwr", "con_upr"), na.rm=TRUE) > tmp2<-melt(data=weekday_data2, id.vars=c("max"), measure.vars=c("value"), na.rm=TRUE) > tmp<-rbind(tmp, tmp2) > qplot(data=tmp, x=max, y=value, colour=variable)
  63. 63. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量、最高気温の相関を可視化 • 予測区間の方が、信頼区間よりも大きな幅であるこ とが分かる(用途も異なる) •一つのデータに纏めてると、他の作図ライブラリでも容易 に描画が可能
  64. 64. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量、最高気温の相関を可視化 • 信頼区間、予測区間を描画する③ – rChartsで可視化 > p<-nPlot(value ~ max, data = tmp, type = "scatterChart", group="variable") > p$set(width=1000, height=500) > p
  65. 65. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量、最高気温の相関を可視化 • 予測値と実績値を比較 – 最高気温から電力使用量の予測値を求める – 求めた予測値を比較出来るよう基データに結合(横に 追加) – プロットする変数を変形(日毎に表示する) – プロット > result.pre<-predict(result.lm, weekday_data2, interval="prediction") > tmp<-cbind(weekday_data2, result.pre) > qplot(data=tmp, x=date, y=value, colour=variable, geom="line") > tmp<-melt(data=tmp, id.vars=c("date"), measure.vars=c("value", "fit"), na.rm=TRUE)
  66. 66. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量、最高気温の相関を可視化 • 日別の推移
  67. 67. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量、最高気温の相関を可視化 • 重回帰分析 – 関連する説明変数を増やすことで、より精度向上を目 指す(※今回は偏相関の話は割愛・・・) – 重回帰=説明変数が複数、単回帰=説明変数が一つ – 今回は最高気温だけでなく、最低気温も利用して電力 の使用量を予測する – 求めた値の参照 > result.lm<-lm(formula = value ~ max + min, data = weekday_data2) > summary(result.lm)
  68. 68. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量、最高気温の相関を可視化 • 求めた値から、回帰直線の切片と傾きを得る • 次の結果から、電力使用量は以下の数式で求めら れることが分かる 電力使用量 = -341.562 + 最高気温 x 102.260 + 最低気温 x 61.284 • t値なども参照可能
  69. 69. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量、最高気温の相関を可視化 • 予測値と実績値を比較(重回帰編) – 最高気温から電力使用量の予測値を求める(予測区 間) – 求めた予測値を比較出来るよう基データに結合(横に 追加) – プロットする変数を変形(日毎に表示する) – プロット > result.pre<-predict(result.lm, weekday_data2, interval="prediction") > tmp<-cbind(weekday_data2, result.pre) > qplot(data=tmp, x=date, y=value, colour=variable, geom="line") > tmp<-melt(data=tmp, id.vars=c("date"), measure.vars=c("value", "fit"), na.rm=TRUE)
  70. 70. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量、最高気温の相関を可視化 • 単回帰よりも重回帰の方が精度が良さそう
  71. 71. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量、最高気温の相関を可視化 • 予測値と実績値を比較(重回帰編) – 電力使用量のピーク値であるため、どの程度までいくこと が予測出来るか、予測区間を使用して見てる – 求めた予測値を比較出来るよう基データに結合(横に 追加) – プロットする変数を変形(日毎に表示する) – プロット > result.pre<-predict(result.lm, weekday_data2, interval="prediction") > tmp<-cbind(weekday_data2, result.pre) > qplot(data=tmp, x=date, y=value, colour=variable, geom="line") > tmp<-melt(data=tmp, id.vars=c("date"), measure.vars=c("value", "upr", "lwr"), na.rm=TRUE)
  72. 72. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量、最高気温の相関を可視化 • データの分布から電力使用量の上限値、下限値を 推測
  73. 73. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量、最高気温の相関を可視化 • rChartsで可視化 > p <- nPlot(value ~ date, data = tmp, group = "variable", type = 'lineWithFocusChart') > p$xAxis( tickFormat="#!function(d) { return d3.time.format('%m/%d')(new Date( d * 86400000 )); }!#" ) > p$x2Axis( tickFormat="#!function(d) { return d3.time.format('%b')(new Date( d * 86400000 )); }!#" ) > p$chart(tooltipContent = "#! function(key, x, y, e, graph){ return 'date: ' + d3.time.format('%Y/%m/%d')(new Date( e.point.date * 86400000 )); } !#") > p$set(width=1000, height=500) > p
  74. 74. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 電力使用量、最高気温の相関を可視化
  75. 75. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 3 •気温の実績値と予報値 •突き合わせ編 こっちはメインじゃないので 軽く流す程度に
  76. 76. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 気温の予測(予報)値 • 気温の実績値だけでもある程度の予測を 行えることが分かった • 気温の予報値がどれだけ使えそうか?何日 後位から予測値として利用可能となるか • 気象庁が公開している週間天気予報の データを用いて検証する • 週間天気予報のデータ概要と解説はこち らを参照(本家) http://www.jma.go.jp/jp/week/319.html
  77. 77. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 1週間の天気予報値 • AITCのクラウド部会では、気象庁が配信している気 象庁XMLの蓄積を行っている – http://api.aitc.jp/ • このデータを利用して、東京都の1年間分の週間天 気予報を抽出したファイルを別途用意したので、それ を使用(https://dl.dropboxusercontent.com/u/8148946/ AITC/kishou_xml.csv) • R上にデータを展開 > kishou_xml<-read.csv("kishou_xml.csv") > kishou_xml<-transform(kishou_xml, date=as.Date(date)) > View(kishou_xml)
  78. 78. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 2日後の予報値と実測値を可視化 • 予報日の2日後と実測値を結合する • 2日後の予報値と実測値をプロット • 2日後の予測範囲と実測値をプロット > tmp<-melt(data=data_2, id.vars=c("date"), measure.vars=c("max", "after_2_max")) > qplot(data=tmp, x=date, y=value, colour=variable, geom="line") > kishou_xml_2<-transform(kishou_xml, date=date+2) > data_2<-merge(data, kishou_xml_2, by="date") > View(data_2) > tmp<-melt(data=data_2, id.vars=c("date"), measure.vars=c("max", "after_2_max_high", "after_2_max_low")) > qplot(data=tmp, x=date, y=value, colour=variable, geom="line")
  79. 79. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 2日後の予報値と実測値を可視化 • 2日後の予報値と実測値
  80. 80. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 2日後の予報値と実測値を可視化 • 2日後の予報範囲と実測値 予測気温には予測範囲があり、 「実況の気温がこの範囲に入る確立はおよそ80%である」とのこと また降水の有無については信頼度という指標もある←今回は考慮しない
  81. 81. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 7日後の予報値と実測値を可視化 • 予報日の7日後と実測値を結合する • 7日後の予報値と実測値をプロット • 7日後の予測範囲と実測値をプロット > tmp<-melt(data=data_7, id.vars=c("date"), measure.vars=c("max", "after_7_max")) > qplot(data=tmp, x=date, y=value, colour=variable, geom="line") > kishou_xml_7<-transform(kishou_xml, date=date+7) > data_7<-merge(data, kishou_xml_7, by="date") > View(data_7) > tmp<-melt(data=data_7, id.vars=c("date"), measure.vars=c("max", "after_7_max_high", "after_7_max_low")) > qplot(data=tmp, x=date, y=value, colour=variable, geom="line")
  82. 82. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 7日後の予報値と実測値を可視化 • 7日後の予報値と実測値
  83. 83. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 7日後の予報値と実測値を可視化 • 7日後の予報範囲と実測値 2日後に比べて、予測範囲の幅が大きく また誤差も大きい
  84. 84. Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 【参考】6日後の予測最高気温(上端)と実測値
  85. 85. Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 【参考】5日後の予測最高気温(上端)と実測値
  86. 86. Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 【参考】4日後の予測最高気温(上端)と実測値
  87. 87. Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 【参考】3日後の予測最高気温(上端)と実測値
  88. 88. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 【参考】予報値と実績値の比較 • 上限を超えた日数のうち、多くが1℃未満の超 過であった –上限は1℃程度のマージンを見た方が良い • 6日後、7日後の予測データはやや精度が落ちる • 4日後~2日後は安定して高い精度であった 上限超過日数 上限超過日数(1℃以上) 最大超過(℃) 2日後 52日 17日 3℃ 3日後 49日 18日 3℃ 4日後 57日 22日 3℃ 5日後 60日 25日 2.8℃ 6日後 67日 31日 4℃ 7日後 62日 30日 4.9℃
  89. 89. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 2日後の予報値から電力使用量算出 • 2日後の予報値から最高気温25度超え、かつ平日 のデータを抽出 • 予測モデルと同じ列名を付与する • 予測モデルを適用する • 基データに予測値を結合し、プロット用に変形 • プロットする > names(target)<-c("date", "value", "max", "min") > View(target) > target<-data_2[25 < data_2$after_2_max & data_2$week_class == "weekday", c("date", "value", "after_2_max", "after_2_min")] > result.pre<-predict(result.lm, target, interval="prediction") > tmp<-cbind(target, result.pre) > tmp<-melt(data=tmp, id.vars=c("date"), measure.vars=c("value", "fit"), na.rm=TRUE) > qplot(data=tmp, x=date, y=value, colour=variable, geom="line")
  90. 90. Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 2日後の予報値から電力使用量算出 • 2日後の電力使用量の予測値
  91. 91. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 2日後の予報値から電力使用量算出 • 同じデータを利用し、予測範囲をプロットする > result.pre<-predict(result.lm, target, interval="prediction") > tmp<-cbind(target, result.pre) > tmp<-melt(data=tmp, id.vars=c("date"), measure.vars=c("value", "upr", "lwr"), na.rm=TRUE) > qplot(data=tmp, x=date, y=value, colour=variable, geom="line")
  92. 92. Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 2日後の予報値から電力使用量算出 • 2日後の電力使用量の予測区間
  93. 93. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. まとめ • 多くのデータを用いることで、より精度の高 い相関分析が行える • 今後、公開されるデータが増えていくことか らデータ分析の需要は多くなる • データを読み解き、活用していきましょう • 疑似相関には気をつけて・・・
  94. 94. Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 97 •本日はお集まり頂き、ありがと うございました。 •アンケートにもご協力ください。 AITC非公式キャラクター ハルミン お疲れさまでした!! この後は是非懇親会へ!!

×