プレゼミ2024
スライド

松浦総一

プレゼミとは?

令和6年度(2024年度)の松浦プレゼミでは、データに強い経営学部生となるため、データ分析のツールとしてプログラミング言語Rを使った分析スキルの修得を目指します。

分析スキル

プレゼミでは、

  • 株価データ
  • 会計データ
  • POSデータ

といったデータベース以外にも、自分で集めたアンケートのデータなど、様々なデータを分析します。 数値データだけでなく、文書データを分析するスキルは会計・ファイナンスだけでなく、組織、戦略、マーケティングと様々な分野で役立ちます。

資料作成

  • 分析した結果をレポートにまとめることも重要です。
  • 分析の再現可能性を高めるための有用なツールとして、Quartoを使います。
  • Quarto(クアルト)とは、Markdown記法で書かれた文章の中に、RだけでなくPythonなど他の言語も組み込める便利なツールです。

なぜRを使うのか?

Rを使うメリットとデメリットをまとめました。

メリット

  • ぜんぶ無料
  • 学習しやすい・教材たくさん
  • 作業履歴が残る
  • 卒業後も使える
  • 大規模データもさくさく扱える。
  • なんかかっこいい

デメリット

  • いろいろインストールしたり,設定が必要
  • 命令文でデータを操作するのでぱっと見わかりにくい。
  • R言語の文法と単語を覚えなきゃいけない
  • キーボード入力が多いので,タッチタイピング必須

MS Excelだとダメなの?

表計算ソフト「Excel」を使うメリットとデメリット

メリット

  • みんな使ってるし,就職しても使いそう
  • 画面の表示が理解しやすい
  • マウスでポチポチしているとグラフや表が作れてしまう。

デメリット

  • 有料 (在学中は無料で利用可能)
  • マウスで何度もポチポチしないといけない
  • 過去のExcelファイルを見ても何をしたのか思い出せない
  • Excelは大きなデータは扱えない
  • アプリが重い、すぐ強制終了する
  • グラフのデザインが悪い

なぜQuartoを使うのか?

Quartoを使うメリット・デメリット

メリット

  • Markdown形式で記述できるので、簡単に論文・レポートの体裁を整えられる
  • 文章作成とデータ分析を同じ場所で行える
  • 文章中にRだけでなくPythonやJuliaを組み込める
  • グラフや表のデザインがきれい
  • なんかかっこいい
  • 無料

デメリット

  • Markdown記法を覚えないといけない
  • 入力するものと出力されるものが違う。
  • ビジネスで利用される場面が少ない

なぜMS Wordだとダメなの?

MS Wordを使うメリット・デメリット

メリット

  • みんな使ってるし,就職しても使いそう
  • (だいたい)入力通りに印刷される
  • 学習のための本や情報が多い
  • もともとパソコンに入っていたりする
  • 日本語チェックができる

デメリット

  • 有料 (在学中は無料で利用可能)
  • 箇条書きなどが勝手に設定され、整えるのに時間がかかる
  • データ分析の結果を貼り付けると、修正が面倒
  • アプリケーションが重いし、長い文章を書くと強制終了する

Rでどんなことができる?

1. 楽にデータ操作ができる

  • Rはデータ分析のためのプログラミング言語で、データを扱うためのパッケージが豊富に揃っています。
  • Excelでは扱えないかなり大きなデータでも簡単にデータ操作ができます。
  • 分析のプロセスをソースコードに残すことができるので、再現可能性が高いです。

練習用データiris

データ分析の練習用データとして有名なirisデータをいろいろ操作してみましょう。 irisは「あやめ」という花の花びらとがく片の長さと幅、あやめの分類名の合計5項目が150件収録されているデータベースです。head()関数を使ってirisの先頭の6行を読み込んでみます。

head(iris) # 最初の6行だけ
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa

平均を計算する。

Sepal.LengthSepal.WidthPetal.LengthPetal.WidthSpeciesという5つの項目が入っていることが分かります。Sepalは花びらで、Petalはがく片です。まず花びらの長さSepal.Lengthの平均を求めてみましょう。平均を返す関数はmean()です。

mean(iris$Sepal.Length)
[1] 5.843333

あやめの花びらの長さの平均は、5.8433333であることが分かりました。簡単ですね。

次に,あやめの花びらの長さの標準偏差を求めてみましょう。 標準偏差を返す関数はsd()です。 下のボックスの緑の三角ボタンを押すと,Rコードが実行され,下に結果が表示されます。 sd()で標準偏差,max()で最大値,min()で最小値,median()で中央値を求めることができるので,sdのところを書き換えて実行し,結果を確認してみてください。

次に、あやめの種類を表すSpeciesにはどんな種類があるのか見てみましょう。 Speciesに入っている種類を確認するには、table()関数を使ってみます。

あやめの種類には、setosa、versicolor, virginicaがあり、それぞれ50個のデータがあることが分かります。

次に、このirisを使って、グラフを作ってみます。

2. キレイなグラフが書ける。

次にRが得意とするグラフ作成を行います。 最初に、花びらの長さのヒストグラムを書いてみます。 さくっとヒストグラムを作るには,基本関数のhist()を使います。 irisデータのSepal.Lengthを使ってヒストグラムを作成してみましょう。

もっとキレイなグラフを書く。

非常に簡単かつ分かりやすく美しいグラフを作成できるggplot2パッケージを使ってグラフを作成します。library(ggplot2)を実行して、ggplot2パッケージを読み込みます。

# install.packages("ggplot2") # 1回だけ実行
library(ggplot2)

次に、ggplot2を使って、花びらの長さのヒストグラムを書いてみます。

g <- ggplot(iris) + aes(Sepal.Length) #データと変数を指定
g <- g + geom_histogram() # ヒストグラム
print(g) # グラフを表示

グラフをカスタマイズする。

ヒストグラムの階級幅を変更したり、棒の数を変更するには、geom_histogram()の中で指定します。 例えば、階級幅を0.5でヒストグラムを作る場合は、binwidth = 0.5のように指定します。

g <- ggplot(iris) + aes(Sepal.Length) +
 geom_histogram(binwidth = 0.5)
print(g)

グラフのデザインを変更する。

グラフが黒くて見づらいので、デザインをいじってみます。 geom_histogram()関数の中で、線を黒、中を薄青色に指定します。

g <- ggplot(iris) + aes(Sepal.Length) +
 geom_histogram(color="black", fill="lightblue",binwidth = .5)
print(g)

グラフのテーマを変える。

背景が地味なので、グラフを雑誌Economist風にしてみます。

g + theme_economist_white() + scale_colour_economist()

2変数の散布図を書く。

次は花びらの長さと幅の散布図を書いてみます。 ggplot2で散布図を書くためには、aes()x軸とy軸を指定し、geom_point()で散布図を指定する。

ggplot(iris) + aes(x = Sepal.Length, y = Sepal.Width) +
 geom_point() + theme_economist()

色分けも簡単

カテゴリーを表す変数をgroupcolourで指定すると、カテゴリーごとにグループ化して色分けもしてくれます。ここでは花の種類を表す変数であるSpeciesごとに色分けしてみます。

g <- ggplot(iris) + # データセットirisを指定
  aes(x = Sepal.Length, # x軸 花びらの幅
      y = Sepal.Width, # y軸 花びらの幅
      color = Species # あやめの種類ごとに色分け
      ) +
      geom_point() + # 散布図を指定
      theme_economist() # テーマをEconomistに
print(g)

色分けも簡単

インタラクティブなグラフも簡単

操作できるグラフも作れます。 plotlyパッケージを使えば簡単です。

library(plotly)
ggplotly(g)

インタラクティブなグラフも簡単

3. レポート・論文が作れる。

  • データを分析した結果を表や図としてレポートや論文に載せる場合、MS Excelで作成した図や表を、MS Wordにコピペしてませんか?
  • その場合、Wordで書いてたレポートの図表に少し修正を加えることになると、またExcelを開いて修正し、またコピペしたりしてませんか?
  • レポートを2週間後に読んだとして、その図表を作成したExcelがどこにあるのか、またどうやって作ったのか思い出せますか?

RとQuartoなら心配いりません。

Quartoで資料作成

  • QuartoRmarkdownを使ってMarkdownでレポートを書けば、文章作成と図表を同じ場所で作成できます。
  • このスライド資料もQuartoを使って作成し、GitHubで公開してます。

複雑な分析も簡単

複数の処理を実行

例えば、先ほどから使っているirisデータで、

  1. 「あやめ」の種類ごとに、
  2. 花びらの長さと幅の平均、中央値、標準偏差を計算し、
  3. それを表にする,

という処理を行いたいとしましょう。

dplyrパッケージで実装

簡単です。Rならね。

iris %>%
  dplyr::group_by(Species) %>% # あやめの種類ごとに
  dplyr::summarise( # 以下の統計量を計算
    花びらの長さの平均 = mean(Sepal.Length),
    花びらの幅の平均 = mean(Sepal.Width),
    花びらの標準偏差 = sd(Sepal.Width)
  ) %>%
  knitr::kable(booktabs = TRUE)
Species 花びらの長さの平均 花びらの幅の平均 花びらの標準偏差
setosa 5.006 3.428 0.3790644
versicolor 5.936 2.770 0.3137983
virginica 6.588 2.974 0.3224966

回帰分析も簡単

たとえば、あやめのがく片の長さが長いほど、花びらが長くなるかどうかを分析しようと回帰分析を行いたいとします。 つまり以下のような回帰モデルを考えます(数式もこんなにキレイに書けます)。 Sepal.Length = \alpha + \beta \times Petal.Length + \varepsilon

回帰分析も簡単

この回帰モデルを最小二乗法で推定した結果を表にしてみます。

library(gtsummary)
lm_fit <- lm(Sepal.Length ~ Petal.Length, data = iris)
tbl_regression(lm_fit,
               type = "html",
               title = "Regression Results",
               exponentiate = FALSE,
               digits = list(all_continuous() ~ 2),
               add_estimate_to_reference_rows = TRUE,
               bold_p = TRUE)
Characteristic Beta 95% CI1 p-value
Petal.Length 0.41 0.37, 0.45 <0.001
1 CI = Confidence Interval

結果の作表も簡単

他にもこんな感じにできます。

library(kableExtra)
library(broom)
lm_fit %>%
  tidy() %>%
  kable(
      caption = "Regression Results",
      booktabs = TRUE,
      digits = c(2, 2, 2, 2)) %>%
  kable_styling(full_width = FALSE) %>%
  column_spec(1, bold = TRUE) %>%
  row_spec(0, bold = TRUE, color = "white", background = "#0073C2")
Regression Results
term estimate std.error statistic p.value
(Intercept) 4.31 0.08 54.94 0
Petal.Length 0.41 0.02 21.65 0

回帰直線も簡単

あやめのがく片の長さと花びらが長さをグラフにし,そこに上で求めた回帰直線を引いてみます。

ggplot(iris, aes(x = Petal.Length, y = Sepal.Length)) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE) +
  theme_economist_white()

このように、Rを使えば、データの操作から分析、結果の表や図の作成まで、一連の作業を一カ所で行うことができます。

まとめ

経営学と統計学そしてRの知識を組み合わせれば、

  1. 経営学で学んだ理論を使って経営現象を捉え,
  2. 複雑な現象の背後にある規則性から仮説を作り
  3. その仮説を検証するために必要なデータを集め、
  4. 適切な統計分析手法を用いて分析し、
  5. その結果をまとめてレポート・論文にする,

という一連のプロセスを、一カ所にまとめることができます。 さあ、Rを勉強して、統計分析と効率的なレポート・論文作成のスキルを身につけましょう。