• 検索結果がありません。

R による利用

ドキュメント内 財務データベースサーバの構築 (ページ 45-60)

3.2 日経 NEEDS 財務データベース MT 版の利用

3.2.3 R による利用

36

3

章 日経

NEEDS

財務データベースの利用 以上のような操作手順によってデータを抽出することができる. なお,このような手順で得られた結果は,

HTML

形式やテキスト形式のファイルとして保存することもでき,適当なソフトウェアに読み込んで再利 用することも可能であるけれども,最も手軽な利用法は, IE等の

Web

ブラウザの

[編集 (E)]

メニューから

[すべて選択 (A)]

を指定し, MS Excelへコピー

&

ペーストすることであろう.

トヨタ自動車の売上高・営業収益の抽出

(年月日順抽出)

トヨタ自動車

(日経会社コードが 0001353)

の売上高・営業収益を収録されている年度すべてに関して抽 出することを例として与える. 以下のように入力すればよい. (なお,誌面の都合上, 行の途中で折り返して いることに注意されたい.)

¶ ³

> x<-sqlQuery(con,’SELECT a02,a07,b001 FROM fc01 WHERE a04="0001353" ORDER BY a02’)

µ ´

ここでは, SQL問合せをデータベースに送信し, 結果をオブジェクト

x

に代入している. なお,

x

は決算年 月日

(a02),

決算期間

(a07) ,

売上高・営業収益額

(b001)

を列に持つ以下のようなオブジェクトである4)

.

¶ ³

> x

a02 a07 b001 1 1984-06-30 12 5908973 2 1985-06-30 12 6770250 3 1986-06-30 12 6646243 4 1987-06-30 12 6675410 5 1988-06-30 12 7215798 6 1989-06-30 12 8021042 7 1990-06-30 12 9192838 8 1991-06-30 12 9855132 9 1992-06-30 12 10163376 10 1993-06-30 12 10210749 11 1994-06-30 12 9362732 12 1995-03-31 9 8120976 13 1996-03-31 12 10718739 14 1997-03-31 12 12243834 15 1998-03-31 12 11678397 16 1999-03-31 12 12749008 17 2000-03-31 12 12879561 18 2001-03-31 12 13424423 19 2002-03-31 12 15106297 20 2003-03-31 12 16054290 21 2004-03-31 12 17294760 22 2005-03-31 12 18551526 23 2006-03-31 12 21036909 24 2007-03-31 12 23948091 25 2008-03-31 12 26289240

µ ´

このように抽出されたデータは以下のように入力することによって時系列プロットを描くことができる.

¶ ³

> plot(as.Date(x[,1]),x[,3],type="l",ylab="売上高・営業収益")

> title("トヨタ自動車の売上高・営業収益")

µ ´

なお,このような入力によって

[R Graphics]

ウィンドウに図

3.5

のようなプロットが描画される.

4)正確にはデータフレーム(data.frame)オブジェクトである.

38

3

章 日経

NEEDS

財務データベースの利用

1.0e+071.5e+072.0e+072.5e+07

売上高・営業収益

1985 1990 1995 2000 2005

トヨタ自動車の売上高・営業収益

3.5:

トヨタ自動車の売上高・営業収益の時系列プロット: 1995年

3

31

日の決算は

6

30

日決算から 年度末に決算日の変更があったため, 9ヶ月分のものとなっていることに注意されたい.

東証

1

部上場企業の売上高・営業収益と売上総利益の抽出

2008

3

31

日決算の東京証券取引所

1

部上場企業の売上高・営業収益と売上総利益を日経会社コード 順にデータベースから抽出することは以下のように入力することによって実行できる.

¶ ³

> y<-sqlQuery(con,’SELECT a04,b001,b004 FROM fc01

WHERE a02="2008-03-31" AND a23="1" ORDER BY a04’)

µ ´

ここで,

y

1202

社の企業を行とし,日経会社コード

(a04),

売上高・営業収益

(b001),

売上総利益

(b004)

を列としてもつオブジェクトである. このように抽出されたデータについて,売上高・営業収益と売上総利 益の散布図を描くための命令が以下のようなものである.

> plot(y[,c(2,3)],xlab="売上高・営業収益",ylab="売上総利益",pch=20)

> title(main="売上高・営業収益と売上総利益の散布図", sub=" 2008

3

31

日決算の東証

1

部上場企業")

µ ´

なお,このような入力によって

[R Graphics]

ウィンドウに図

3.6

のようなプロットが描画される.

0.0e+00 5.0e+06 1.0e+07 1.5e+07 2.0e+07 2.5e+07

0e+002e+064e+066e+068e+061e+07

売上高・営業収益

売上総利益

売上高・営業収益と売上総利益の散布図

 2008年3月31日決算の東証1部上場企業

3.6: 2008

3

31

日決算の東証

1

部上場企業の売上高・営業収益と売上総利益の散布図

このプロット結果から,売上高・営業収益と売上総利益の間には「線形性」(直線関係)が成り立っていな いことがわかる. このことは,このデータセットに対して単回帰モデル

(回帰直線)

を当てはめることが成 功しないことを示唆している.

そこで,実験的ではあるが,売上高・営業収益と売上総利益5)のそれぞれを対数変換したものの散布図を 描き,回帰直線を当てはめることを考える.

5)売上総利益に関しては負のデータが含まれるため,ここでは4000を加えて正値にしてから対数をとっていることに注意しよう.

40

3

章 日経

NEEDS

財務データベースの利用

¶ ³

> plot(log(y[,2]),log(y[,3]+4000),

xlab="売上高・営業収益",ylab="売上総利益",pch=20)

> title(main="売上高・営業収益と営業利益の散布図:

対数スケール",

sub="2008

3

31

日決算の東証

1

部上場企業")

> abline(lm(log(y[,3]+4000)~log(y[,2]),y),lwd=2)

µ ´

以上のような入力によって図

3.7

のようなプロットが得られる.

8 10 12 14 16

810121416

売上高・営業収益

売上総利益

売上高・営業収益と売上総利益の散布図: 対数スケール

2008年3月31日決算の東証1部上場企業

3.7: 2008

3

31

日決算の東証

1

部上場企業の売上高・営業収益と売上総利益の散布図: 対数スケール

この結果から,いくつかの外れ値が存在することは否めないけれども, (少なくとも粗データに直接,回帰 直線を当てはめるよりは)回帰直線の当てはまりが改善されていることが確認できることに注意しよう6)

.

東証

1

部上場企業の売上高・営業収益と営業利益のパネルデータ抽出

東証

1

部上場企業の売上高・営業収益と営業利益を日経会社コードと決算年月日順に抽出することは以 下のように入力することによって実行できる.

6)ちなみに,粗データと対数変換後のデータのそれぞれに単回帰モデルを当てはめたときに,自由度調整済み決定係数は0.44から 0.79に増加した.

> tmp<-sqlQuery(con,

’SELECT fc01.a04, firmlist.shamei_jp, fc01.a02,fc01.b001, fc01.b006 FROM fc01

JOIN firmlist ON fc01.a04=firmlist.nikkeicode WHERE a23="1" ORDER BY a04, a02’)

µ ´

ここで,オブジェクト

tmp

は,日経会社コード

(fc01.a04)

と企業名の漢字略称

(firmlist.shamei jp),

決 算年月日

(fc01.a02),

売上高・営業収益

(fc01.b001),

営業利益

(fc01.b006)

を列としてもつオブジェク トであり, 時間的な推移をもつ特定の個体群のパネルデータ

(panel data)

であることに注意しよう. 与え られたオブジェクト

tmp

は,決算年月日に関して欠損値

(Not Avarable: NA)

を含むことから,それらを除 外したものを新たなオブジェクト

z

に付値し,さらに行名

(企業名 +

決算年月日)と列名

(「日経会社コー

ド」,「企業名」,「決算年月日」,「売上高」,「営業利益」))を付値する.

¶ ³

# NA

を踏むデータを除外

> z<-subset(tmp,is.na(tmp[,3])==FALSE)

#

列名の付値

> rownames(z)

<-paste(tmp[,2][is.na(tmp[,3])==FALSE],tmp[,3][is.na(tmp[,3])==FALSE],sep="")

#

行名の付値

> colnames(z)<-c("日経会社コード","企業名","決算年月日","売上高","営業利益")

µ ´

このようにして作られた

z

は, 26445行, 5 列のデータフレーム・オブジェクトであり,関数

head

を使って 先頭の

6

行を表示すると以下のようになる.

¶ ³

日経会社コード 企業名 決算年月日 売上高 営業利益 極洋1984-10-31

1

極洋

1984-10-31 206485 2816

極洋1985-10-31

1

極洋

1985-10-31 206512 3679

極洋1986-10-31

1

極洋

1986-10-31 194353 1405

極洋1987-10-31

1

極洋

1987-10-31 200304 1300

極洋1988-03-31

1

極洋

1988-03-31 81843 303

極洋1989-03-31

1

極洋

1989-03-31 213409 965

µ ´

このオブジェクトに対して,東証

1

部上場企業に関する財務指標の時間的な推移を「母集団」と「個体」の 観点から考察するために以下のようなプロットを行う.

(1)

売上高と営業利益に関する散布図を単年度毎にプロット

(2)

長期間にわたってデータが収録されている個々の企業に対する営業利益の時系列プロット

単年度毎の散布図のプロット 各年毎の散布図をデータが存在する全期間にわたって描くためには,アドオ ン・パッケージである

lattice

7) を利用することが容易であろう. このパッケージには高機能の散布図を 描くための関数

xyplot

が用意されており,以下のように入力することによって図

3.8

のようなプロットを 描くことができる.

7)多変量データに関する様々なグラフを作成するためのツールを備えたパッケージ.Rの前進となったデータ解析環境Sに実装さ れているトレリス・システム(trellis system)をモデルをとしてD. Sarkarによって作成されたものである.latticeパッケージの 詳細は作成者自身によるショーカー(2009)に与えられている.

42

3

章 日経

NEEDS

財務データベースの利用

¶ ³

> library(lattice)

> xyplot(営業利益~売上高 | format(z$決算年月日,"%Y"),data=z,pch=20,type=c("p","g"))

µ ´

ここでは,

format

関数によってデータフレーム

z

に対する属性である「決算年月日」を年

("%Y")

に変換 したものを条件として与える

(|)

ことによって年ごとの「売上高」に対する「営業利益」を対応させる

(営

業利益~売上高)散布図を描くことを示している. その際,プロットに利用される点の種類

(20

番が

に 対応)を

pch=20

で与え, プロットのタイプ

(type)

として点

("p")

と基準グリッド

("g")

を与える指定を 行っていることに注意しよう.

売上高

営業利益

5000000 1000000 1500000 2000000

0 15000000

1976 1977

0 15000000

1978 1979

0 15000000

1980 1981

1982 1983 1984 1985 1986

0500000 1000000 1500000 2000000 1987

5000000 1000000 1500000 2000000

1988 1989 1990 1991 1992 1993

1994 1995 1996 1997 1998

0500000 1000000 1500000 2000000 1999

5000000 1000000 1500000 2000000

2000 2001 2002 2003 2004 2005

2006

0 15000000 2007

0500000 1000000 1500000 2000000 2008

3.8: 1976

年〜2008年における東証

1

部上場企業の単年度毎の売上高・営業収益と営業利益に関する散

布図

(時系列順プロット)

0.0e+00 2.5e+07

01500000

1989‑03

売上高

営業利益

0.0e+00 2.5e+07

01500000

1990‑03

売上高

営業利益

0.0e+00 2.5e+07

01500000

1991‑03

売上高

営業利益

0.0e+00 2.5e+07

01500000

1992‑03

売上高

営業利益

0.0e+00 2.5e+07

01500000

1993‑03

売上高

営業利益

0.0e+00 2.5e+07

01500000

1994‑03

売上高

営業利益

0.0e+00 2.5e+07

01500000

1995‑03

売上高

営業利益

0.0e+00 2.5e+07

01500000

1996‑03

売上高

営業利益

0.0e+00 2.5e+07

01500000

1997‑03

売上高

営業利益

0.0e+00 2.5e+07

01500000

1998‑03

売上高

営業利益

0.0e+00 2.5e+07

01500000

1999‑03

売上高

営業利益

0.0e+00 2.5e+07

01500000

2000‑03

売上高

営業利益

0.0e+00 2.5e+07

01500000

2001‑03

売上高

営業利益

0.0e+00 2.5e+07

01500000

2002‑03

売上高

営業利益

0.0e+00 2.5e+07

01500000

2003‑03

売上高

営業利益

0.0e+00 2.5e+07

01500000

2004‑03

売上高

営業利益

0.0e+00 2.5e+07

01500000

2005‑03

売上高

営業利益

0.0e+00 2.5e+07

01500000

2006‑03

売上高

営業利益

0.0e+00 2.5e+07

01500000

2007‑03

売上高

営業利益

0.0e+00 2.5e+07

01500000

2008‑03

売上高

営業利益

3.9: 3

月期決算の東証

1

部上場企業の売上高・営業収益と営業利益に関する散布図: 1989年

3

月期から

2008

3

月期までの

20

年間の時系列順プロット

44

3

章 日経

NEEDS

財務データベースの利用 ちなみに,散布図を描く時点を固定するために,最も多い決算月を調べると,

¶ ³

> table(months(z[,3]))

10月 11月 12月 1月 2月 3月 4月 5月 6月 7月 8月 9月

251 512 1727 340 1248 20717 230 424 162 95 172 566

µ ´

となり, 20717件が

3

月に決算を行っている. この結果より, 3月期に決算を行っている企業の売上高と営業 利益を指定した期間に対して年順にプロットする関数

plot.panel.scatter

を以下のように作成する.

¶ ³

> plot.panel.scatter<-function(obj, start=1976,end=2008) {

year<-seq(start,end) N<-length(year) xr<-range(obj[,4]) yr<-range(obj[,5])

par(mfrow=c(trunc(sqrt(N)),trunc(sqrt(N))+1)) for(i in 1:N)

{

ym<-paste(year[i],c("-03"),sep="")

plot(z[format(obj[,3],"%Y-%m")==ym,][,c(4,5)],

main=as.character(ym),xlim=xr,ylim=yr,pch=20) }

}

µ ´

この関数の引数に

start=1989

と与えて以下のように実行することによって,図

3.9

のように

20

年間分の 散布図が時系列順に描かれる.

¶ ³

> plot.panel.scatter(z,start=1989)

µ ´

企業に対する営業利益の時系列プロット 営業収益の時系列プロットを企業毎に描画することを考える. ま ず, 30 年以上データが存在する企業を対象とし, それらの企業名

(firms30)

を抽出し, それらの企業数

(numfirms30)

を計算するためには以下のように入力する.

¶ ³

> firms30<-names(summary(z[,2])[summary(z[,2])>=30])

> numfirms30<-length(firms30)

µ ´

次に,これらの企業に関するパネルデータ

(z30)

を作成するためには以下のように入力する.

¶ ³

> z30<-z[z[,2]==firms30[1],]

> for(i in 2:numfpirms30) z30<-rbind(z30,z[z[,2]==firms30[i],])

µ ´

最後に,パネルデータ

z30

における個々の企業の営業利益の時系列プロットを行うためには以下のように 入力する.

¶ ³

> xyplot(営業利益~決算年月日|企業名,data=z30,type="l",par.strip.text=list(cex=0.5))

µ ´

ここで,プロットのタイプ

(type)

が直線

("l")

であり,

par.strip.text=list(cex=0.5)

でストリップ8)

8)latticeパッケージに付属のプロット関数は複数の矩形パネルが格子状に配列された形状をもち,各パネルにはそこにプロット

される変数名などを表示する「帯」状の領域はストリップ(strip)とよばれる.

に表示されるテキストの大きさを 倍していることに注意しよう.

決算年月日

営業利益

‑200000 200000 600000 1000000

1980 2000

NEC TDK

1980 2000

イオン オーエスジー

1980 2000

オムロン オリックス

1980 2000

クボタ コマツ サンケン電気 セコム ソニー ダイワ精工 テルモ トプコン パイオニア

‑200000 200000 600000 1000000

パナソニック

‑200000 200000 600000

1000000 パナソニック電工 プリマハム マキタ ミネベア ユニ・チャーム リコー リズム時計工業ワコールホールディングス 旭化成 伊藤忠エネクス 伊藤忠商事 丸紅 京セラ 三井物産 三菱重工業

‑200000 200000 600000 1000000

‑200000 三菱商事

200000 600000

1000000 三菱倉庫 三菱電機 三洋電機 住友商事 小松精練 新日本石油 村田製作所 大成建設

大日本印刷 東芝 東燃ゼネラル石油 日産自動車 日新製鋼 日東電工 日本ケミコン

‑200000 200000 600000 1000000

‑200000 日本ハム

200000 600000

1000000 日本精工 日本電子日立ハイテクノロジーズ日立工機‑200000 日立製作所富士フイルムホールディングス福田組 本田技研工業

200000 600000 1000000

味の素

3.10: 30

年以上データが存在する東証

1

部上場企業

(58

社)を対象とした営業利益の時系列プロット

参考文献

[1] Codd, E. F. (1970) A relational model of data for large shared data banks, Communications of the ACM, Vol. 13, pp. 377-387.

[2] P.

デュボア著,赤井 誠 他訳

(2003)

『MySQLクックブック

VOLUME 1, 2

』,オライリー・ジャパン.

[3] D.

ドゥラティ, A.ロビンス共著, 福崎 俊博訳

(1997)

『sed & awkプログラミング 改訂版』,オーラ イリー・ジャパン.

[4]

深沢千尋著

(2003)

『文字コード「超」研究』,ラトルズ.

[5]

福田 剛志, 森本 康彦,徳山 豪 共著

(2001)

『データマイニング』, 共立出版.

[6] B. M.

ヒル, J. ベーコン, C. バーガー, J.ジェス, I. カーステッチ 共著, 株式会社トップスタジオ訳

(2007)

『Ubuntu徹底入門: The Official Ubuntu Book日本語版』,翔泳社.

[7]

地道 正行著

(2010)

『日経

NEEDS

財務データにもとづくデータベースサーバの構築』,商学論究,第

57

巻,第

4

号, pp.23–80.

[8]

甲斐 穣 著

(2008)

『Mac OS X Server 10.5実践ワークグループ

&

インターネットサーバ構築』,オー ム社.

[9]

金宏 和實著

(2007)

『データベースの知識と実務』,翔泳社.

[10]

増永 良文著

(2003)

『リレーショナル・データベース入門

[新訂版]』,

サイエンス社.

[11]

日本経済新聞社デジタルメディア編

(2008)

『NIIEDS-CD ROM日経財務データ

DVD

版 ご利用の手 引き

Ver.1.20』,

日経メディアマーケティング株式会社.

[12]

日本経済新聞社デジタルメディア編

(2009)

『NEEDS財務データ一般事業会社レイアウト

Ver.4.11』,

日経メディアマーケティング株式会社.

[13]

西沢 夢路著

(2007)

『基礎からの

MySQL』, SoftBank Creative.

[14] R Development Core Team (2009) R Data Import/Export, URL http://www.r-project.org/, R Foundataion for Statistical Computing, Vienna, Austria, ISBN 3-900051-10-0.

[15] D.

ショーカー著,石田基広, 石田和枝 共訳

(2009)

『Rグラフィックス自由自在』, シュプリンガー・

ジャパン.

[16] P.

スペクター著,石田基広,石田和枝 共訳

(2008)

『Rデータ自由自在』,シュプリンガー・ジャパン.

ドキュメント内 財務データベースサーバの構築 (ページ 45-60)