2024-05-10
join
系関数(教科書コラム5.2)dplyr
にはfull_join()
関数を始め,結合を行うために用いるjoin
系関数が用意されている.A
とDPSデータB
の結合を通じて,それぞれのjoin
系関数の返り値を確認していこう.tibble()
関数を使って二つのデータフレームを手動で作成している.full_join()関数
inner_join()
関数# A tibble: 1 × 3
firm_ID stock_price DPS
<dbl> <dbl> <dbl>
1 1 120 5
left_join()
関数# A tibble: 2 × 3
firm_ID stock_price DPS
<dbl> <dbl> <dbl>
1 1 120 5
2 2 500 NA
目標
simulation_data
フォルダにあるfinancial_data.csv
をデータフレームfinancial_data
として読み込んでみよう.head()
関数により,financial_data
の冒頭6行を表示し,どのようなデータが収録されているか確認してみよう.codes
である場合,読み込みたいfinancial_data.csv
が格納されているsimulation_data
フォルダにアクセスするには,一個上の階層に一度戻る必要があり,それは..
により実現可能である.simulation_data
フォルダに移動 (/simulation_data
)し,/financial_data.csv
で目的のファイルにアクセス可能である.Rows: 22855 Columns: 7
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
dbl (6): firm_ID, year, macc, X, TA, CFO
date (1): fiscal_year_end
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# A tibble: 6 × 7
firm_ID fiscal_year_end year macc X TA CFO
<dbl> <date> <dbl> <dbl> <dbl> <dbl> <dbl>
1 8 2004-07-01 2004 12 3125 204270 3319
2 8 2005-07-01 2005 12 3973 197259 4571
3 8 2006-07-01 2006 12 4117 203422 3820
4 8 2007-07-01 2007 12 4277 217386 2367
5 8 2008-03-01 2008 8 4743 218038 5591
6 8 2009-03-01 2009 12 5445 222643 3604
fiscal_year_end
: 決算年月 (YYYY-MM-DD形式)macc
: 決算月数X
: 当期純利益(百万円)TA
: 資産合計(百万円)CFO
: 営業活動によるキャッシュフロー(百万円)X
を基準化分析にあたっては,当期純利益X
そのものの分布ではなく,各企業の規模を統制して各観測値を横並びで比較可能にしたScaled Earnings (SE
)の分布を考えよう.
\[ \underbrace{SE_{i,t}}_{\textbf{企業$i$の年度$t$のScaled Earnings}} = \frac{\overbrace{X_{i,t}}^{\textbf{企業$i$の年度$t$の当期純利益}}}{\text{各企業の規模の代理変数}} \]
この分析では,簡便的に各企業の発行する株式の時価総額 (株価 \(\times\) 発行済株式数)を規模の代理変数と捉え,分析を進めて行こう.
simulation_data
フォルダにあるstock_data.csv
をstock_data
として読み込んでみよう.Rows: 22852 Columns: 4
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
dbl (4): firm_ID, year, stock_price, shares_outstanding
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# A tibble: 6 × 4
firm_ID year stock_price shares_outstanding
<dbl> <dbl> <dbl> <dbl>
1 8 2007 412 117800776
2 8 2008 514 117800776
3 8 2009 743 117800776
4 8 2010 718 117800776
5 8 2011 1015 117800776
6 8 2012 958 117800776
stock_price
: 株価shares_outstanding
: 発行済株式数stock_data
に時価総額ME
列の追加1e6
は科学技術分野で一般的に用いられる科学的表記と呼ばれる表記法(教科書157頁)であり,\(1 \times 10^6 (= 1,000,000)\)と等しい.ME
を計算する際,財務データと単位を揃えることを目的として1e6
で除している.(stock_price * shares_outstanding) / 1000000
とはしないこと!SE
列も追加dplyr
のif_else()
関数を使って決算月数が12ヶ月の場合はSE
を計算し,そうでなければ欠損値NA
になるように工夫している.sample
を利用して分析を進めて行こう.目標
SE
が欠損値となっている観測値を除外(\(=\) SE
が計算可能な観測値のみを抽出)し,分析対象となるデータフレームをsample
として定義してみよう.drop_na()
の使い方は,ここを参照.summarize()
関数を使ってみよう目標
sample
を用いて,年度ごとにSE
の平均値を算出し,それをMean
列と名付けよう.year
列とMean
列から成るデータフレームをtable_1
として定義しよう.# A tibble: 6 × 2
year Mean
<dbl> <dbl>
1 2005 0.0144
2 2006 0.0126
3 2007 -0.0109
4 2008 0.0337
5 2009 0.0749
6 2010 0.0378
table_1
として定義.year
でグループ化.summarize
関数を適用し,SE
の平均値をmean(SE)
により計算し,それをMean
と命名.quantile()
関数の使い方quantile()
関数を用いる.この関数は第一引数に入力データ(数値ベクトル),第二引数に求めたい分位点の値をパーセントでなく小数表示で代入する(教科書185頁).SE
の第1四分位を求めたいならば,quantile(SE, 0.25)
とすれば良い.write_csv()
関数を使ったデータフレームの出力readr
のwrite_csv()
関数を使って,先に作成したデータフレームtable_1
をtables
フォルダに出力しよう.write_csv()
関数の第一引数はデータフレーム名を入力し,第二引数でファイル名を指定する(教科書184頁).codes
であることを前提にすれば,出力したいtables
フォルダへ移動するには,一個上の階層に一度戻る必要があり,それは..
により実現可能である.tables
フォルダに移動 (/tables
)し,table_1.csv
という名前で出力 (/table_1.csv
)すれば良いので,write_csv()
関数の第二引数は,"../tables/table_1.csv"
と指定する.SE
)のヒストグラムggplot2
を利用し,Scaled Earnings (SE
)のヒストグラムを描画し,利益マネジメントの実態を明らかにしていこう.目標
sample
内のSE
について,-0.2から0.2までのSE
のヒストグラムを描画しよう.
Earnings Interval
,\(y\)軸のラベルはFrequency
とする.SE
のヒストグラムの描画geom_vline()
関数は,vertical(垂直)に直線を引く.xintercept
引数で値を指定し,またlinetype
引数で適当な線種を指定する(dashed
の他にも,dotted
やsolid
など多様にオプションが用意されている).PNG
形式で出力目標
figures
フォルダにfigure_1.png
の名前を付して出力しよう.ggsave()
関数を利用する.第一引数にはファイル名を指定しよう.figures
フォルダのある階層を意識して第一引数を指定しよう.Saving 7 x 5 in image
SE
が正で少なくとも過去1期は損失回避できた企業群だけに絞り,同様のヒストグラムを描画する方法を実践していこう.Exercise
mutate()
関数とlag()
関数を組み合わせて,一期前のSE
を表すlagged_SE
をデータフレームsample
に追加しよう.
if_else()
関数を用いてyear
とlag(year)
との関係を示す条件式を予め指定し,lagged_SE
の計算式を工夫するのが理想的である.lagged_SE
列が追加できれば,前年度損失回避企業をfilter()
関数により抽出し,パイプ演算子を使って抽出データをggplot()
関数に引き渡して一気にヒストグラムの可視化まで行ってみよう.2024経営データ分析(会計)