2024年度 松浦プレゼミ

プレゼミとは?

令和6年度(2024年度)の松浦プレゼミでは、データに強い経営学部生となるため、データ分析のツールとしてもはやデファクトスタンダードとなっている(いいすぎ)プログラミング言語Rを使って、様々な分析を行うためのスキルの修得を目指し、

経営学\times統計学\timesR

の知識を身につけた経営学部生の育成を目指します。

立命館大学は株価データや会計データ、POSデータといったデータベースを契約しているため、企業分析を行うための豊富なデータを利用することができます。 さらに自分で集めたアンケートのデータや、Webスクレイピングで集めたデータなど、大規模データを分析できるスキルは、会計・ファイナンスだけでなく、組織、戦略、マーケティングと様々な分野で役に立つでしょう。

またRで分析した結果をレポートにまとめる際に有用なツールとして、Quartoを勉強します。 Quarto(クアルト)とは、Markdown記法で書かれた文章の中に、RだけでなくPythonなど他の言語も組み込める便利なツールです。 MS Excelで作図・作表を行い、それをMS Wordに貼り付けるという作業を止めて、1カ所でデータ分析とレポート作成を行うことで、作業効率を向上させます。

なぜRを使うのか?

Rを使う理由を、メリットとデメリットを比較しながら以下で説明します。

データ分析のツールとして大学で使うことが多いのはMS Excelですが,MS Excelは表計算ソフトウェアで,統計分析を行うこともできますが,その機能は限定的です。 データアナリストが利用しているプログラミング言語として最も有名なものはPython(パイソン),Julia(ジュリア),そしてR(アール)などでしょう。

メリット
  • ぜんぶ無料
  • 学習しやすい・教材たくさん
  • 作業履歴が残る
  • 卒業後も使える
  • 大規模データもさくさく扱える。
  • Git/GitHubでバージョン管理できる
  • なんかかっこいい
デメリット
  • いろいろインストールしたり,設定が必要
  • 命令文でデータを操作するのでぱっと見わかりにくい。
  • R言語の文法と単語を覚えなきゃいけない
  • キーボード入力が多いので,タッチタイピング必須

MS Excelだとダメなの?

マイクロソフト社の表計算ソフト「Excel」は非常に便利だけれど,データ分析のツールとしては以下のようなデメリットがあります。

メリット
  • みんな使ってるし,就職しても使いそう
  • 画面の表示が理解しやすい
  • マウスでポチポチしているとグラフや表が作れてしまう。
  • いろんな機能が用意されていて簡単に使える
デメリット
  • 有料 (在学中は無料で利用可能)
  • マウスで何度もポチポチしないといけない
  • 過去のExcelファイルを見ても何をしたのか思い出せない
  • Excelは大きなデータは扱えない
  • アプリが重い、すぐ強制終了する
  • グラフのデザインが悪い

なぜQuartoを使うのか?

Rユーザーが使うことが多いRstudioを開発したPosit社が提供する、R Markdownをさらに進化させたQuartoを使うメリットは以下の通りです。

MS Wordのように、書いた文章がそのまま印刷されるようなWYSIWYG(What You See Is What You Get)なワープロソフトとは異なり、特定の記法にしたがって書かれた文章をコンピューターで処理することで印刷用の文書に変換するWYSIWYM(What You See Is What You Mean)な文書処理システムをマークアップ言語といいます。Markdownが代表的なマークアップ言語で、そこにRを組み込んだR Markdownが広く利用されています。そのR Markdownをさらに進化させて、文書内でRやPython, Juliaなどのコードを実行できるようにしたのがQuartoです。

メリット
  • Markdown形式で記述できるので、簡単に論文・レポートの体裁を整えられる
  • 文章作成とデータ分析を同じ場所で行える
  • 文章中にRだけでなくPythonやJuliaを組み込める
  • レポートの再現性を高めることができる
  • グラフや表のデザインがきれい
  • なんかかっこいい
  • 無料
デメリット
  • Markdown記法を覚えないといけない
  • 入力するものと出力されるものが違う。
  • ビジネスで利用される場面が少ない

なぜMS Wordだとダメなの?

マイクロソフト社のワープロソフト「Word」は非常に便利でみんな使っているものだけれど、 データ分析の結果をレポートにまとめる際には以下のようなデメリットがあります。

メリット
  • みんな使ってるし,就職しても使いそう
  • (だいたい)入力通りに印刷される
  • 学習のための本や情報が多い
  • もともとパソコンに入っていたりする
  • 日本語チェックができる
  • Git/GitHubでバージョン管理できる
デメリット
  • 有料 (在学中は無料で利用可能)
  • 箇条書きなどが勝手に設定され、整えるのに時間がかかる
  • データ分析の結果を貼り付けると、修正が面倒
  • アプリケーションが重いし、長い文章を書くと強制終了する

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

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

Excelでは扱えないかなり大きなデータでも簡単にデータ操作ができます。 たとえば、データ分析の練習用データとして有名なirisデータをいろいろ操作してみましょう。 irisは「あやめ」という花の花びらとがく片の長さと幅の4項目と3種類のあやめの分類名の1項目の合計5項目が150件収録されているデータベースです。Rには練習用に最初から入っているので、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()関数は、算術平均を返す関数です。

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. キレイなグラフが書ける。

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

Rはグラフ作成が得意なプログラミング言語です。 その機能を最大限活用するために,非常に簡単かつ分かりやすく美しいグラフを作成できるggplot2パッケージを導入します。

# install.packages("ggplot2") # 1回だけ実行
library(ggplot2)
g <- ggplot(iris) + aes(Sepal.Length) +
 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()

次は花びらの長さと幅の散布図を書いてみます。 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なら心配いりません。

QuartoRmarkdownを使ってMarkdownでレポートを書けば、文章作成と図表を同じ場所で作成できます。 ちなみに、このウェブサイトもQuartoを使って作成し、GitHubでウェブサイト公開してます。 さらにも簡単に作れます。

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

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

という処理を行いたいとしましょう。 簡単です。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

この回帰モデルを最小二乗法(Ordinary Least Square Methos)で推定した結果を表にするときも次のように書けばできます。

library(gtsummary)
lm_fit <- lm(Sepal.Length ~ Petal.Length, data = iris)
# tbl_regression(lm_fit,
              #  type = "html",
              #  title = "回帰分析の結果",
              #  exponentiate = FALSE,
              #  digits = list(all_continuous() ~ 2),
              #  add_estimate_to_reference_rows = TRUE,
              #  bold_p = TRUE)

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

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()

上記の結果から,がく片が1センチ長くなると,花びらの長さが約4.1ミリ長くなることがわかります。 このように、Rを使えば、データの操作から分析、結果の表や図の作成まで、一連の作業を一カ所で行うことができます。

まとめ

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

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

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