一日の最大電力と気温の関係(一般電気事業者ごと) - 中部 は,東日本で2011年の震災前と震災後の違いが際立って読み取れるが,中部電力管内では2クラスタに分かれるように見える。なぜか。とりあえず2014年度だけについて調べてみた。
中部電力|電力需給状況のお知らせから過去の電力需要実績(2014年度)(PDF)をダウンロードし,次のようにしてテキストファイルに直す:
pdftotext -raw datalist_09.pdf
できた datalist_09.txt を次のRubyスクリプトでCSV化する:
#! /usr/bin/env ruby -w
# coding: utf-8
while line = gets
if line =~ /^(\d\d\d\d)年(\d\d)月(\d\d)日 . (.*)$/
x = "#{$1}-#{$2}-#{$3} #{$4}"
x.gsub!(/,/, "")
x.gsub!(/ /, ",")
puts x
end
end
できた datalist_09.csv をRに読み込む:
data09 = read.csv("datalist_09.csv", header=FALSE)
これをフラット(1データ1行)にする:
power = data.frame(datetime=seq(as.POSIXct("2014-04-01 01:00"),
as.POSIXct("2015-04-01 00:00"),
3600))
power$val = as.vector(t(as.matrix(data09[,2:25])))
気温データは気象庁の過去の気象データ・ダウンロードから取得する。具体的には,「地点を選ぶ」で名古屋,「項目を選ぶ」で時別値・気温,「期間を選ぶ」で2014年4月1日から2015年3月31日,「表示オプションを選ぶ」はデフォルト(値を表示・すべての期間の値を表示・すべて数値・日付リテラル)のまま。「CSVファイルをダウンロード」をクリックすると data.csv というファイル名でダウンロードされる。文字コードはShift JISだが,頭の5行を無視すれば文字コード無指定でも問題ない:
temp = read.csv("data.csv", skip=5, header=FALSE)
とりあえず全データをプロットしてみる:
plot(temp$V2, power$val, xlab="名古屋の気温(℃)", ylab="電力需要実績(発電端,万kW)")
冒頭のリンク先にある図は,毎日の最大電力の時間と,そのときの名古屋の気温をプロットしている。Rでは次のようにすればよい:
m = sapply(0:364, function(i){which.max(power$val[24*i+(1:24)])+24*i})
plot(temp$V2[m], power$val[m], xlab="名古屋の気温(℃)", ylab="電力需要実績(発電端,万kW)")
確かに2クラスタに分かれるように見える。曜日でプロットしてみる:
plot(temp$V2[m], power$val[m], type="n",
xlab="名古屋の気温(℃)", ylab="電力需要実績(発電端,万kW)")
text(temp$V2[m], power$val[m], weekdays(power$datetime[m], abbreviate=TRUE))
どうやら曜日が関係するようだ。上のクラスタは月〜金で,下は土日に若干の金・月などが混ざっている。