2024-04-26
,
) で区切って書いたテキスト・ファイルのことを指す..xlsx
ファイル)を思い浮かべるかもしれないが,特定のアプリケーションに依存したファイル形式だと,互換性がなくて他の環境では開けない恐れがある.したがって,テキストファイルに値とカンマだけで内容を書き込み,互換性を高めたファイル形式がCSVファイルである.read.csv()
関数を使ったCSVファイルの読み込みread.csv()
関数が用意されている.read.csv()
関数には数多くのオプション引数が存在するが,それらをいったん無視して,ファイルのパスをダブルクォーテーション(""
)で囲って引数に指定すれば良い.ch03_daily_stock_return.csv
がコードと同じ作業ディレクトリに位置しているなら,上のように"ch03_daily_stock_return.csv"
という相対パスのみ指定すれば,Rはそのファイルを発見できる.もし上のコードを実行して,次のようなエラーが出る場合,Rはch03_daily_stock_return.csv
を発見できていない.ch03_daily_stock_return.csv
から変更されていないことを確認しよう.繰り返し同じファイルをダウンロードしているとch03_daily_stock_return(1).csv
のように,勝手に名前が変更されてしまう場合がある.daily_stock_return
の詳細の確認head()
関数を用いて,コンソール上でdaily_stock_return
の冒頭6行を出力してみる. date firm1 firm2
1 2020-04-01 -0.039482142 0.076962597
2 2020-04-02 0.005978689 -0.007248848
3 2020-04-03 0.055786605 -0.017304080
4 2020-04-06 0.041934669 0.002168957
5 2020-04-07 -0.020192796 0.075545365
6 2020-04-08 -0.002294705 -0.096211744
nrow()
関数を用いて,何営業日分の株価を含んでいるか確認してみよう.ここで,nrow
はnumber of rows(行数)の略である.daily_stock_return
の詳細の確認daily_stock_return
の各列の名前やデータ型を確認したい.str()
関数を用いてdaily_stock_return
の内部構造を調べてみよう.str
はstructure(構造)の略で,変数の内部構造を意味する.'data.frame': 21 obs. of 3 variables:
$ date : chr "2020-04-01" "2020-04-02" "2020-04-03" "2020-04-06" ...
$ firm1: num -0.03948 0.00598 0.05579 0.04193 -0.02019 ...
$ firm2: num 0.07696 -0.00725 -0.0173 0.00217 0.07555 ...
21 obs. of 3 variables
より,三変数について,21の観測値が収録されていることが確認できる.chr
)のdate
num
)のfirm1
num
)のfirm2
daily_stock_return
の詳細の確認firm1
)と企業2 (firm2
)の株式の日次リターンについて,平均的に見てどちらのリターンが高かったのか,mean()
関数を用いて確認してみよう.$
演算子を用いると列名で各列を参照できることを思い出そう. firm_ID name industry
1 1 Firm A Machinery
2 2 Firm B Chemicals
3 3 Firm C Machinery
firm_data
というデータフレームを作成すると,firm_ID
列は数値型,name
列とindustry
列が文字型となる.industry
列はカテゴリカル変数と呼ばれ,各観測データがどのサブカテゴリーに属するかを明らかにする役割を果たしている.
'data.frame': 3 obs. of 3 variables:
$ firm_ID : num 1 2 3
$ name : chr "Firm A" "Firm B" "Firm C"
$ industry: Factor w/ 2 levels "Chemicals","Machinery": 2 1 2
as.factor()
関数は,データ列をファクター型に変換する関数.str()
関数を用いて構造を眺めてみると,name
列が文字型 (chr
)のままであるのに対し,industry
列はファクター型 (Factor
)に変換済."Chemicals"
と"Machinery"
は水準 (level
)と呼ばれ,各カテゴリーの名前を表す.コンピュータ内部では各カテゴリーが自然数で表されており,今回の観測データはその番号を介して,2 (Machinery)
,1 (Chemicals)
,2 (Machinery)
と表現されている.\[ \begin{align*} \underbrace{\mathit{PV}}_{\textbf{現在価値}}= \frac{\overbrace{CF_1}^{\textbf{1年後の確実なキャッシュフロー}}}{\underbrace{1 + R_{F}}_{\textbf{無リスク金利$R_F$で割り引く}}} \end{align*} \]
\[ \begin{align*} \underbrace{\mathit{PV}}_{\textbf{現在価値}} &= \frac{\overbrace{CF_T}^{\textbf{$T$年後の確実なキャッシュフロー}}}{\underbrace{(1+R_F)^ {T}}_{\textbf{$T$年分だけ無リスク金利$R_F$で割り引く}}} \end{align*} \]
tidyverse
パッケージとは?tidyverse
と呼ばれるパッケージ群である.以下が,それに含まれる主なパッケージ一覧である.名称 | 使用用途 |
---|---|
ggplot2 |
グラフの描画によるデータの可視化 |
dplyr |
データの加工や操作に便利な関数の提供 |
tidyr |
雑然データを整然データの形式に変換する関数の提供 |
readr |
CSVファイルなどの高速,かつ,ユーザー・フレンドリーな読み込み |
tibble |
データフレームを改良したtibble というデータ形式の提供 |
tidyverse
パッケージのインストールinstall.packages()
関数を用いて,第一引数にインストールしたいパッケージ名を""
で囲って指定する.ggplot2
による作図 — 作図データの準備目標
\(R_{F}\)が0.1から0.01刻みで0.2まで変化するときの1年後の確実なキャッシュフロー100の現在価値を求め,割引率に応じて現在価値がどのように変化するか可視化してみよう.
100
というのは1次元のスカラー(一つの実数)であり,R
は11次元のベクトルである.したがって,次式を計算しようとすると,両者の次元が一致しておらず,数学的には不完全な式となっている. \[
PV = \frac{\overbrace{100}^{\textbf{スカラー}}}{1 + \underbrace{\text{R}}_{\textbf{11次元のベクトル}}}
\]ggplot2
による作図 — データフレームの準備ggplot2
は,入力データをデータフレームの形式で準備する必要があるので,まずはdata.frame()
関数を使って 新たなデータフレームfigure_data
を作成しよう.ggplot2
による作図 — tidyverse
パッケージの読み込みggplot2
パッケージを使うためには,library()
関数を使ってtidyverse
を利用することを冒頭で宣言する必要がある.pacman::p_load()
を利用する.ggplot2
のgg
とは
grammar of graphicsの略である.ggplot2
では,グラフの構成要素を各種のレイヤーに分解し,コード上でそれを積み重ねていく形でグラフを作図する.
ggplot2
による作図 — data
引数の指定ggplot()
関数により,作図用キャンバスを準備し,入力データを指定.data = figure_data
として,figure_data
を入力用データとして用いることを宣言している.+
演算子を用いてレイヤーを足していく形で図を作成する.geom_line()
関数である.mapping
引数のaes()
関数では,\(x\)軸と\(y\)軸の要素をラベル名で指定している.ggplot2
による作図 — 散布図の追加ggplot2
の使い方に慣れるために,先ほどの折れ線グラフに各データを表す点を追加してみよう.geom_point()
であるから,+
演算子を用いてそれを先ほどのコードに追加すると,散布図が上書きされる.ggplot2
による作図 — その他の調整Discount Rate
とPresent Value
へと変更しよう.labs()
関数を使えば簡単にできる.theme_classic()
関数は,グラフの背景や枠線など(グラフのテーマと言う)を統一的に変更するための関数である.theme_void()
や,背景は白だがメモリを表す十字線が入るtheme_bw()
など,複数の選択肢があるので,目的に応じて使い分けると良いだろう.Exercise 1
ggplot2
を駆使して描画せよ.なお,\(x\)軸のラベルはyear
,\(y\)軸のラベルはPresent Value
とすること.2024経営データ分析(会計)