2025/05/09
join系関数(教科書コラム5.2)dplyrにはfull_join()関数を始め,結合を行うために用いるjoin系関数が用意されている.AとDPSデータBの結合を通じて,それぞれのjoin系関数の返り値を確認していこう.tibble()関数を使って二つのデータフレームを手動で作成している.full_join()関数inner_join()関数left_join()関数目標
simulation_dataフォルダにあるfinancial_data.csvをデータフレームfinancial_dataとして読み込んでみよう.head()関数により,financial_dataの冒頭6行を表示し,どのようなデータが収録されているか確認してみよう.codesである場合,読み込みたいfinancial_data.csvが格納されているsimulation_dataフォルダにアクセスするには,一個上の階層に一度戻る必要があり,それは..により実現可能である.simulation_dataフォルダに移動 (/simulation_data)し,/financial_data.csvで目的のファイルにアクセス可能である.# 財務データの読み込み
financial_data <- read_csv("../simulation_data/financial_data.csv")
# head()関数を用いて冒頭6行の結果のみ表示
head(financial_data) 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として読み込んでみよう.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として定義しよう.# 年度ごとにSEの平均値を計算
table_1 <- sample %>% # 集計結果をtable_1として定義
group_by(year) %>% # 年度でグループ化
summarize(Mean = mean(SE)) # 平均値をMeanと命名
head(table_1) # 内容の確認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フォルダのある階層を意識して第一引数を指定しよう.SEが正で少なくとも過去1期は損失回避できた企業群だけに絞り,同様のヒストグラムを描画する方法を実践していこう.Exercise
mutate()関数とlag()関数を組み合わせて,一期前のSEを表すlagged_SEをデータフレームsampleに追加しよう.
if_else()関数を用いてyearとlag(year)との関係を示す条件式を予め指定し,lagged_SEの計算式を工夫するのが理想的である.lagged_SE列が追加できれば,前年度損失回避企業をfilter()関数により抽出し,パイプ演算子を使って抽出データをggplot()関数に引き渡して一気にヒストグラムの可視化まで行ってみよう.2025 経営データ分析(会計)