第2回 r言語で始めよう、データサイエンス(ハンズオン勉強会)...
Post on 30-Jun-2015
3.188 Views
Preview:
DESCRIPTION
TRANSCRIPT
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
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
自己紹介
よろしくおねがいしまーす
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フェスタ
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活用推進コンソーシアム
Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
第4期活動対象分野
realvirtual
コンテキスト
人
メタ データ
モノ コト
コンテキストコンピューティング
クラウドコンピューティング
AR
ユーザーエクスペリエンス
ソーシャル
ナチュラルユーザーインタフェース
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言語で始めよう、データサイエンス!(ハンズオン勉強会)~ 相関分析による需要予測編 ~
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]
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つの変数間に規則的に変化していく性質を持つデータ
• 例えば、ある一方の値が大きくなるほどもう一方の値も大きくなる(正の相関)、またはある一方の値が大きくなるほどもう一方の値は小さくなる(負の相関)などの関係がある状態
• ある一方の変数の値が特定出来ると、もう一方の値を推測出来るという性質を持つ そんな感じのことを実際に
体感して行きたいと思います
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
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.
•RとR Studioをインストールして頂けてますか??
•Rはこちらから•http://www.r-project.org/
•R Studioはこちらから•http://www.rstudio.com/ide/download/desktop
8
環境の確認
Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
•コマンド全部打つのは大変、コピペしたいという方はこちらに一時的にPDFで置いておきました•https://dl.dropboxusercontent.com/u/8148946/AITC/20140428_R%E8%A8%80%E8%AA%9E%E3%83%8F%E3%83%B3%E3%82%BA%E3%82%AA%E3%83%B3%E5%8B%89%E5%BC%B7%E4%BC%9A.pdf
•コピペは一行ずつでお願いします。•たぶんハンズオン終わったら見えなくなります。
9
環境の確認
Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
R Studioの見方(おさらい)
• R の IDE環境コマンドの実行履歴アクティブなデータセット
グラフのプロットパッケージ管理
コマンドラインコード・アシスト付き
データViewソースEdit
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))
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
Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. 3
•気温と電力使用量の•相関分析編
Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
まずは電力使用量と気温に相関があるかを確認して行きます。
データをRに取り込んでデータを可視化していきます。
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)
Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
東京電力の電力使用量
• こんな感じのデータが出来上がりました- date: 対象の日付
- time: 1時間辺りのデータの対象時間
- value: 1時間辺りの電力使用量
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)
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.
気象統計情報のダウンロード詳細
• 「地点を選ぶ」で東京を選択②
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.
気象統計情報のダウンロード詳細
• 「期間を選ぶ」で連続した期間で表示する、2013年1月1日から2013年12月31日までの日別値を表示を選択
Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
気象統計情報のダウンロード詳細
• CSVファイルをダウンロードボタンを押下する
Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
気象統計情報の最高気温、最低気温
• こんな感じのデータが出来上がりました- date: 対象の日付
- max: 最高気温
- min: 最低気温
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)
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)
Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
電力使用量と気温
• こんな感じのデータが出来上がりました- date: 対象の日付
- max: 最高気温
- min: 最低気温- value: 1日の電力使用量ピーク値
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)
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")
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.
電力使用量と気温
• 折れ線グラフでは、同じ季節でも日によって多くのばらつきがあることが分かる
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.
電力使用量を可視化
• 電力使用量をインタラクティブに可視化– 折れ線グラフ
> 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
Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
電力使用量と気温
• 見た目はggplot2と同様だけど・・・
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.
気温を可視化①
• 最高気温をプロット– 散布図
– 折れ線グラフ
• 最低気温をプロット– 散布図
– 折れ線グラフ
> 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")
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)
Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
電力使用量、最高気温の相関を可視化
• 電力使用量と最高気温をプロット– 電力使用量と最高気温をx, y軸で二次元上に> qplot(data=data, x=max, y=value)
• 平日と土日とで使用量にばらつきがあったため、分けて考える必要がある
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)
Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
電力使用量、最高気温の相関を可視化
• 平日(weekday)のなかでも、まだばらつきがある
Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
電力使用量、最高気温の相関を可視化
• 前スライドで左下に丸をつけた範囲のデータを絞り込む– 最高気温20度未満、電力使用量3200未満のデータ
> data[data$max<20 & data$value<3200,]
• 年末年始と、2013年のカレンダーからGW期間ということが判明平日ではなく、祝祭日に分類出来る
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)
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.
電力使用量、最高気温の相関を可視化
• 平日データのみ絞り込み– それぞれデータの分布が異なるため、区別して分析す
る必要がある– 今回は平日データの分析を実施するため、平日のみ
抽出する
– 平日だけでプロット
> weekday_data=data[data$week_class=="weekday", ]> View(weekday_data)
> qplot(data=weekday_data, x=max, y=value)
Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
電力使用量、最高気温の相関を可視化
• 最高気温と電力使用量の関係では、25度を上回ると使用量が増加し、また20度を下回っても使用量が増加している(20度から25度が最適な温度?)
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
Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
電力使用量、最高気温の相関を可視化
• やはり見た目はggplot2と同じように見えるけど・・・
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.
電力使用量、最高気温の相関を可視化
• 平日25度を上回るデータのみ絞り込み– 平日の25度を上回るデータの抽出
– 平日の25度を上回るデータだけでプロット
> weekday_data2=weekday_data[weekday_data$max>25,]> View(weekday_data2)
> qplot(data=weekday_data2, x=max, y=value)
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.
電力使用量、最高気温の相関を可視化
• 実際にどれくらい相関関係にあるのか?– 相関の強さを調べる指標として、相関係数が存在す
る– ±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 強い相関
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)
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.
電力使用量、最高気温の相関を可視化
• 回帰直線を求める– 最高気温から電力使用量を予測する回帰直線を求め
る
– 求めた値の参照
– result.lmは実績値を基にした予測モデルとして利用する
> result.lm<-lm(formula = value ~ max, data = weekday_data2)
> summary(result.lm)
Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
電力使用量、最高気温の相関を可視化
• 求めた値から、回帰直線の切片と傾きを得る• 次の結果から、電力使用量は以下の数式で求めら
れることが分かる
電力使用量 = -463.545 + 最高気温 x 152.937
• t値なども参照可能
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")
切片
傾き
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
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")
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)
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.
電力使用量、最高気温の相関を可視化
• 信頼区間、予測区間を描画する③– rChartsで可視化> p<-nPlot(value ~ max, data = tmp, type = "scatterChart", group="variable")> p$set(width=1000, height=500)> p
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)
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.
電力使用量、最高気温の相関を可視化
• 重回帰分析– 関連する説明変数を増やすことで、より精度向上を目
指す(※今回は偏相関の話は割愛・・・)– 重回帰=説明変数が複数、単回帰=説明変数が一つ
– 今回は最高気温だけでなく、最低気温も利用して電力の使用量を予測する
– 求めた値の参照
> result.lm<-lm(formula = value ~ max + min, data = weekday_data2)
> summary(result.lm)
Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
電力使用量、最高気温の相関を可視化
• 求めた値から、回帰直線の切片と傾きを得る• 次の結果から、電力使用量は以下の数式で求めら
れることが分かる
電力使用量 = -341.562 + 最高気温 x 102.260
+ 最低気温 x 61.284
• t値なども参照可能
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)
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.
電力使用量、最高気温の相関を可視化
• 予測値と実績値を比較(重回帰編)– 電力使用量のピーク値であるため、どの程度までいくこと
が予測出来るか、予測区間を使用して見てる
– 求めた予測値を比較出来るよう基データに結合(横に追加)
– プロットする変数を変形(日毎に表示する)
– プロット
> 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)
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.
電力使用量、最高気温の相関を可視化
• 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
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. 3
•気温の実績値と予報値•突き合わせ編
こっちはメインじゃないので軽く流す程度に
Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
気温の予測(予報)値
• 気温の実績値だけでもある程度の予測を行えることが分かった
• 気温の予報値がどれだけ使えそうか?何日後位から予測値として利用可能となるか
• 気象庁が公開している週間天気予報のデータを用いて検証する
• 週間天気予報のデータ概要と解説はこちらを参照(本家)http://www.jma.go.jp/jp/week/319.html
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)
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")
Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
2日後の予報値と実測値を可視化
• 2日後の予報値と実測値
Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
2日後の予報値と実測値を可視化
• 2日後の予報範囲と実測値
予測気温には予測範囲があり、「実況の気温がこの範囲に入る確立はおよそ80%である」とのことまた降水の有無については信頼度という指標もある←今回は考慮しない
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")
Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
7日後の予報値と実測値を可視化
• 7日後の予報値と実測値
Copyright © 2013 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
7日後の予報値と実測値を可視化
• 7日後の予報範囲と実測値
2日後に比べて、予測範囲の幅が大きくまた誤差も大きい
Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
【参考】6日後の予測最高気温(上端)と実測値
Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
【参考】5日後の予測最高気温(上端)と実測値
Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
【参考】4日後の予測最高気温(上端)と実測値
Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
【参考】3日後の予測最高気温(上端)と実測値
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℃
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")
Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
2日後の予報値から電力使用量算出
• 2日後の電力使用量の予測値
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")
Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved.
2日後の予報値から電力使用量算出
• 2日後の電力使用量の予測区間
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. 97
•本日はお集まり頂き、ありがとうございました。•アンケートにもご協力ください。
AITC非公式キャラクターハルミン
お疲れさまでした!!この後は是非懇親会へ!!
top related