ねこすたっと

ねこの気持ちと統計について悩む筆者の備忘録的ページ。

高校生のためのデータ分析入門 (30):解析環境を準備しよう!

数学が苦手なうちのJKに、将来必要となるかもしれないデータ分析への抵抗感をなくしてもらう目的で記事を書いてきました。30回目の今回で一区切り、シーズン終了(修了)です。前回に引き続き、最終回も実際にデータを分析する準備をしていきましょう。

クラウドサービスを使えば解析環境を簡単に導入できる!

最近は高校生でも1人1台パソコンを持たされるところも多いようです。すごい時代になりました。 しかし、ソフト(=アプリ)を入れるとなると制限がかかってしまい、完全に自由に使えるわけではなさそうですね。 そんな人のために、知っておくと便利なクラウドサービスを紹介したいと思います。

ちなみにクラウドサービスというのは、自分のパソコン上でソフトウェアが動くのではなく、オンライン上で色々やってくれるもの。Google Chrome, Edge, Safariといったブラウザで操作できますが、インターネットへの接続が必要です。

Google(グーグル)

Spreadsheet(スプレッドシート)

これは学校でも使ったことあるかもしれません。緑色の表計算アプリです。主にデータテーブルを作成する目的で使います(作成の仕方は前回記事を参照)。

スプレッドシートはあくまで表計算アプリなので、高度な統計解析はできませんが、関数を使って簡単な計算を実行することができます。 下に挙げるものは使う機会が多いので、確認しておくといいかもしれません。

  • SUM:指定したセルの合計を返す
  • AVERAGE:指定したセルの平均値を返す
  • COUNT:指定したセルの個数を返す
  • COUNTIF:指定した条件に該当するセルの個数を返す
  • IF:条件に応じた値を返す

作成したデータシートは、後で紹介する解析環境に直接読み込むこともできますが、まずは一旦パソコンにファイルとしてダウンロードする方がいいです。そのときはcsv形式*1を選びましょう(下)。

Colaboratory(コラボラトリー)

これを使えば、現在最も人気のあるPython(パイソン)というプログラミング言語を実行することができます。 Pythonとして習っているのかどうか知りませんが、「情報」の教科書に登場するプログラムはPythonをもとにしているようですね。

Pythonはデータ分析だけでなく、色々な用途で使われているので、プログラミングを勉強したいと思ったら、まずPythonから始めるといいでしょう。近年、機械学習・深層学習(ディープラーニング)の注目度が高くなっていることもあり、とても人気のある言語です。

使い方は簡単です(プログラミングが簡単という意味ではない)。下のようにGoogleドライブで新規ファイルを作成するだけで始められます。

Colabファイルを開くとしたのような画面が出てきます。この箱(セル)の中にPythonのコード(プログラムを動かすための文章)を書いていきます。

試しに下のコード(作:Chat GPT)をコピペして実行してみてください。セルの左端の▶️を押せば実行できます。

import matplotlib.pyplot as plt
import numpy as np

# サンプルデータの生成
np.random.seed(0) # 乱数のシードを設定
x = np.random.rand(50) * 100  # 0から100までの乱数を50個生成
y = x * 2 + np.random.normal(0, 10, 50)  # xに対して線形の関係とランダムなノイズを加えたデータを生成

# 散布図の描画
plt.scatter(x, y)
plt.title('Sample Scatter Plot')  # タイトル
plt.xlabel('X')  # X軸のラベル
plt.ylabel('Y')  # Y軸のラベル
plt.grid(True)  # グリッドの表示
plt.show()

上のグラフが描けましたか?「コードで動かす」というと難しく聞こえますが、他の人やChat GPTが考えてくれたコードを利用できるので、とても便利です。

Posit Cloud(ポジットクラウド)

こちらは以前はRStudio Cloudと呼ばれていたもので、統計解析に特化したプログラミング言語であるR(アール)を実行することができます。

まずは下のリンクにアクセスしてください。

posit.cloud

下の画面が表示されると思います。「GET STARTED」と書かれたボタンを押します。

すると下のようなプランを選ぶ画面になります。1番左の無料プランを選んでください。

下の画面になるので、$0と書かれているのを確認してから「SIGN UP」を押します。

次に下のようなアカウント作成画面が出てきます。Googleのアカウントでサインインすることもできますが、学校から供与されているGoogleアカウントで入ろうとすると学校側がPosit Cloudの利用を承認する必要があります(ひょっとしてメールアドレスを使っても学校の端末からはアクセスできないかもしれません。自分のタブレットがあればいいんですが。スマホだとちょっと画面が小さすぎ…。)

アカウントを作成してログインすると、下のような画面が現れるので、右上の「New Project」から「New RStudio Project」を選びます。ちなみに、その下にある「Jupyter」はPythonを実行するためのものですが、無料版では使えないみたい。

Posit Cloudが起動したら、左上の「緑プラスボタン」から「R Script」を選んで押します。

この時点で、下のように4つの区画が表示されていると思います。 それぞれの区画の役割を簡単に紹介しましょう。

左上に表示されているのは、さっき作成した「R Script(アールスクリプト)」です。スクリプトとはコードを書いた文書のことで、ここ*2にコードを書いていきます。

左下には「Console(コンソール)」と書いたタブがあります。ここはRというプログラムを実行する場所です。スクリプトを実行すると、コードがこの画面に飛んできてコードを実行し、続いて出力結果が表示されます。コードに誤りがあれば、エラーメッセージが表示されます。

右上には「Environment(エンバイロンメント, 環境)」というタブがあります。ここには、読み込んだデータや定義した関数など、現在Rが扱っているもの(オブジェクト, 対象物)の概要が表示されます。

右下には下のようなタブがあります。

  • Files(ファイル):保存したスクリプトやグラフがファイルとして表示されます。
  • Plots(プロット):グラフを描くと、このタブに表示されます。
  • Packages(パッケージ):機能拡張パッケージを入れることで色々な解析を実行できるようになります(次説明します)。全て無料です。

拡張パッケージをインストールして機能を追加する

Rは拡張パッケージをインストールすることで、いろいろな機能を追加することができます。 標準よりもキレイなグラフを描けるようになる「ggplot2」というパッケージをインストールしてみましょう。

下の画面に示したように、PackagesタブのInstallボタンを押します。 出現した画面の2段目に、インストールしたいパッケージ名を入力して、Installボタンを押すとコンソール画面(左下)にインストールが実行している様子が流れてきます。

Rスクリプトを実行する

それでは試しに、下のコードをスクリプトエディタ(左上)にコピペして、実行してみましょう(これもChat GPTに書いてもらいました)。

# 必要なパッケージの読み込み
library(ggplot2)

# 乱数のシードを設定
set.seed(0)

# サンプルデータの生成
x <- runif(50) * 100  # 0から100までの乱数を50個生成
y <- x * 2 + rnorm(50, mean = 0, sd = 10)  # xに対して線形の関係とランダムなノイズを加えたデータを生成

# データフレームの作成
data <- data.frame(x, y)

# ggplot2を使った散布図の描画
ggplot(data, aes(x = x, y = y)) +
  geom_point(colour="blue") +  # 散布図の描画
  ggtitle('Sample Scatter Plot') +  # タイトル
  xlab('X') +  # X軸のラベル
  ylab('Y') +  # Y軸のラベル
  theme_minimal() +  # テーマの設定
  theme(panel.grid.major = element_line(colour = "gray"), panel.grid.minor = element_blank())  # グリッドの表示設定

スクリプトエディタにコピペした後、コード全体を選択して、右上にあるRunボタンを押します。

グラフを保存する

さっきのコードがうまく実行できていれば、右下のPlotsタブにグラフが表示されます。

このグラフを自分のパソコンに保存するためには、タブの近くにあるExportボタンから「Save as Image...」を押します。

下のような画面が出てくるので、ファイルの名前と画像サイズを指定します。

次はFilesタブを開いてみてください。さっき保存した画像(.png)の名前があると思います。このファイルにチェックを入れて、「More」→「Export...」を選びます。

出てくるウィンドウ(下)で「Download」を押せばダウンロード完了です。

おわりに

  • 実際の操作は「習うより慣れろ!」です。まずはグラフを描かせる宿題で使ってみるといいかもしれません。
  • Chat GPTに課金すると、ほとんど書いてくれますが、無料版のChat GPTでも結構教えてもらえます。
  • 30回、読んでコメントくれてありがとう!

*1:csvとは「カンマで区切られた値(comma separated value)」のこと。

*2:スクリプトエディタと呼んだりします

高校生のためのデータ分析入門 (29):キレイな分析用データセットを作成しよう

数学が苦手なうちのJKに、将来必要となるかもしれないデータ分析への抵抗感をなくしてもらう目的で記事を書いてきました。今回と次回で、実際にデータを分析する準備をしていきましょう。

分析を始める前にデータをキレイにしよう

データ分析は、そもそもデータがなければ始まりません。 データは、組織の中で収集されるものだけでなく、外部機関(政府、自治体、国際機関など)から提供されるものもあります。無料で利用できるものもあれば、有料*1で提供されるものもあります。

データの源が何であれ、分析するためには、まずデータセットを「キレイな状態」にする必要があります。データを分析可能なキレイな状態にすることを、「前処理」と言ったりします。一見地味ですが、「データ分析は8割が前処理!」と言っても過言ではないほど重要なステップです。

キレイなデータセットとは

データセットは、

  • 1つの対象者の情報が、1つの行に収められている
  • 1つの項目(変数)が、1つの列に収められている
  • 1つの値が、1つのセル(=マス)に収められている

が基本です。 下に示したのはダメな例ですが、どこがダメなのか考えてみましょう。

1つの列には1つの特性のみ収める

「後期の期末成績」を見てください。点数と5段階評価がまとめられていますね。 つまり、1つの列に2つの特性(= 属性(attribute)と言います)が格納されてしまっています。 一見すると数値が収められているように見えますが、"( )" が入っているため、文字列として認識されます。 このままだと平均点を計算するときに、年間総合評点が邪魔になってしまいます。

「所属クラブ」についても、複数の所属先がまとめて1つの列に格納されていますが、 所属のパターンが多くなり、このままでは「テニス部に入っている人は何人いるか」などを集計することが難しいです。 例えば、「運動部」「文化部」と複数の列に分けて情報を収めておく方が、使いやすいデータセットになるかもしれません。

1つの列に収める属性は1つにしておきましょう。後で属性と属性をくっつけてまとめる(例:"1組", "1番" → "1-1")のは簡単にできますから。

1つの行で1人のデータが完結している

次に「組」の列を見てください。同じ組の人の部分はセルが結合されていますね。 確かに、人間が見るときは余計な繰り返しがない方が見やすいですが、分析するためには「1行取り出せば1人のデータが完結している状態」になっている必要があります。

見出し行は1行に

データを収めた表(データテーブル)の一番上には、各列に収められている特性を示す「変数名」を書きます。 これを「見出し行(header)」と言います。 どこまでが見出しなのか分からなくなるので、見出し行は1行だけにする約束になっています。

入力は文字情報のみ(できれば半角英数だけ)

ExcelやGoogleスプレッドシートでは、セルに色をつけることができますよね。「血液型」は色分けされていて見やすくなっていますが、解析ソフトには色の情報は反映されません。 文字として入力した情報だけが読み取られます。また、2組1番の宍粟さんは前期の期末試験は欠席でしたが、このセルに斜線を引いておいても解析ソフトには読み込めません。欠測値には「NA(not available)」と入れておきましょう

自分でデータセットを作る場合は、慣れるまでは「変数名を含め、半角英数字だけ*2使う」とした方が余計なトラブルが少ないです。さっきのデータの中に1箇所、誤って入力されている部分があるのが分かりますか?

1組2組の神戸さんの数学の中間結果だけが全角で入力されちゃってます。これはエラーのもと!

上記に注意して作成し直すと、次のようになります。

横型データと縦型データ

さっき「1行に1人分」と説明しましたが、これは分析の方針によります。 例えば、1回の試験を分析単位にする場合は、下の表のように1行ごとに試験の結果が入っている方が扱いやすいです。

1人の生徒につき4行分必要になるので、元のデータよりも縦長になりますね。 元のデータセットのように、反復して測定した結果(= テストの点数)を横に並べたものを横型データ、あるいは横持ちデータ(wide format data)と言います。 これに対して、反復測定した結果を縦に並べたものを縦型データ、あるいは縦持ちデータ(long format data)と言います。

横型と縦型は互いに変換することが可能で、用いる解析方法によって選択します。

複数のデータテーブルを統合して使う

これまでデータセットは最初から1つの塊として収集(あるいは提供)されるものとして話してきましたが、実際はいくつかのデータテーブルに分かれていることが少なくありません。

例えば、生徒の組と所属クラブのデータセットは、下の2つのデータテーブルを元にして作成することができますね。

「生徒番号」によって2つのデータが関連付けられています。このように、複数のデータテーブルに分けて保管された一連のデータの集合を、関係データベース(relational database)と言います。

「生徒番号」のように、データテーブルを結びつけるための列を「キー(key)」と呼びます。キーとなる項目は、重複や空欄があってはいけません(同姓同名がいる可能性があるので、名前はキーにしない方がいいです)。

場合によっては複数の項目を組み合わせてキーにすることがあります。 例えば、病院の入院記録データは、患者ごとに固有のカルテ番号だけではキーになりません。同じ人が複数回入院する可能性があるからです。しかし、同じ人が同じ日に2回入院することはないので、カルテ番号と入院年月日を組み合わせればキーにすることができます。

なぜ、わざわざ複数のデータテーブルに分けるんだろう?と思うかもしれませんが、その方が整理・管理が簡単だからです。管理するときは分けておく方が便利ですが、分析するときは1つにまとめる必要があります

おわりに

  • 自分でデータセットを準備するときは、半角英数に限定しておくと良いと言いましたが、外部から提供されるデータを扱うときはそうはいきません。全角を半角に直したり、文字列から数値だけを切り出したりするスキルが必要になります。
  • データセットを扱う場合は個人情報にも気をつけましょう。名前、住所、電話番号など個人を特定できる情報は、顧客管理としては必要ですがデータ分析には不要なものが多いです。
  • 次回:高校生のためのデータ分析入門 (30):解析環境を準備しよう! - ねこすたっと

*1:情報は価値ある商品になりえます

*2:数字から始まる変数名や、一部の記号は受け付けてくれない場合があります。また、単語と単語の間にスペースを入れると、何個入っているのか分からなくなるのでやめましょう。

高校生のためのデータ分析入門 (28):ここまでの総復習!

数学が苦手なうちのJKに、将来必要となるかもしれないデータ分析への抵抗感をなくしてもらう目的で記事を書いてきました。そろそろ終盤なので、登場した用語をまとめて確認しておきます。

変数

変数は、数や個数を表す量的変数(quantitative variable)と、 対象の性質を表す質的変数(qualitative variable)に分けられると説明しました。

necostat.hatenablog.jp

「〇〇変数」は他にもいっぱい登場しました(一部初登場あり)。

  • カテゴリー変数(categorical variable):質的変数と同じ意味(名義変数に限定して使うこともあるかも)
  • 2値変数(dichotomous variable):カテゴリー数が2つだけの変数
  • 連続変数(continuous variable):整数未満の数値も取る変数
  • 離散変数(discrete variable):整数だけしか取らない変数。質的変数 + 個数・回数を表す量的変数。
  • 順序変数(ordinal variable):質的変数のうち、カテゴリーに自然な順序がある変数
  • 名義変数(nominal variable):質的変数のうち、カテゴリーに自然な順序がない変数

数値で要約

質的変数の分布は、度数(frequency)割合(proportion)で要約します。 割合と率(rate)との違いも説明しましたね。

量的変数の分布は、

  • 中心位置:平均値(mean)中央値(median)
  • 分布の広がり:標準偏差(standard deviation)四分位範囲(interquartile range)範囲(range)

で要約します。

necostat.hatenablog.jp

グラフ化

質的変数に使うグラフとして、棒グラフ(bar chart)円グラフ(pie chart)を紹介しました。

量的変数に使うグラフとしては、ヒストグラム(histogram)箱ひげ図(box-whisker plot)密度プロット(density plot)がありました。

2つの量的変数の関係を示すときは、散布図(scatter plot)を使えばいいんでしたね。

necostat.hatenablog.jp

necostat.hatenablog.jp

期待値・分散

期待値(expectation)とは「変数の確率重み付け平均値」、 分散(variance)とは、「各観測値と平均との差の2乗の期待値」です。分散の正の平方根が標準偏差です。

計算式がたくさん出てきて、ウンザリしたかもしれませんが、計算に便利な式変形は、知っておくとテストで役に立つかも?

necostat.hatenablog.jp

necostat.hatenablog.jp

necostat.hatenablog.jp

確率分布

連続型確率分布

正規分布(normal distribution)は、「山ひとつ・左右対称・極端な外れ値なし」が特徴で、連続変数が従う確率分布の代表です。

necostat.hatenablog.jp

検定の話で登場したカイ2乗分布(chi-square distribution)t分布(t distribution)も連続型確率分布です。

離散型確率分布

二項分布(binomial distribution)は、「N回の試行で成功が出る回数」の分布です。 試行が1回の場合は、ベルヌーイ分布(bernoulli distribution)という名前でしたね。

necostat.hatenablog.jp

ポアソン分布(Poisson distribution)は、「稀にしか起こらないことの回数」の分布で使います。

necostat.hatenablog.jp

統計的推定

標本(sample)を調べて、母集団(population)の特性を統計学にもとづいて推測することを、統計的推定(statistical inference)といいます。推定には誤差(error)がつきもので、それには

  • 系統誤差(systematic error)
  • 偶然誤差(random error)

の2種類があるという話をしました。

necostat.hatenablog.jp

necostat.hatenablog.jp

推定値として、最もありそうな1点を推定することを点推定(point estimation)、ある程度の幅をもって推定することを区間推定(interval estimation)といいました。

区間推定の表し方として、95%信頼区間(95% confidence interval)がよく使われます。「何が95%なのか」は復習してください。

necostat.hatenablog.jp

統計的仮説検定

標本で大小関係を調べることで、母集団の大小関係について判断を下すことを統計学的仮説検定(statistical hypothesis testing)といいます。ここでは大事な用語がたくさんでてきました。

  • 帰無仮説(null hypothesis):主張したい仮説を否定したもの
  • 対立仮説(alternative hypothesis):主張したい仮説
  • P値(P-value):帰無仮説が正しいという仮定のもとで、標本よりも極端なデータが観察される確率
  • 有意水準(significant level):得られたP値が大きいかどうか判断するために、事前に決めておいた基準

検定をするときは有意水準の他に、大小関係の方向を限定した片側検定(one-sided test)を使うのか、どちらが大きくても構わない両側検定(two-sided test)を使うのか、も事前に決めておかなければいけません。

necostat.hatenablog.jp

P値の求め方を分類して説明しました。ちょっと難しめでしたね。

necostat.hatenablog.jp

質的変数に使う検定

カテゴリー変数では、まずカイ2乗分布(chi-square distribution)を押さえておきましょう。 使えない状況があることも覚えておきましょう。

necostat.hatenablog.jp

量的変数に使う検定

量的変数では、t検定(t test)が基本です。こちらも使用に際して注意が必要な状況があることを覚えておきましょう。

necostat.hatenablog.jp

相関と回帰

相関

相関(correlation)は、2つの変数の間にある直線的関係のことで、相関係数(correlation coefficient)を用いて示しました。 相関係数がどのように計算されるか、その元になる共分散(covariance)とともに説明しましたね。

necostat.hatenablog.jp

回帰

回帰(regression)とは、変数間の関係性を関数で表すことでした。相関と違って、「上流・下流」の区別があります(それぞれ下のように呼びます)。

  • 「上流」の変数(原因):説明変数(explanatory variable)独立変数(independent variable)
  • 「下流」の変数(結果):応答変数(response variable)従属変数(dependent variable)

necostat.hatenablog.jp

線形回帰モデル

応答変数が連続変数の場合には、線形回帰モデル(linear regression model)が使われます。説明変数の関数として応答変数の条件付き期待値が与えられ、そこに誤差が加わって実際の観測値が得られると考えます。

応答変数は連続変数1つだけですが、説明変数はカテゴリー変数でもOKで、複数あっても構いません。直線だけじゃなくて曲線も当てはめることもできることを紹介しましたね。

necostat.hatenablog.jp

necostat.hatenablog.jp

necostat.hatenablog.jp

necostat.hatenablog.jp

一般化線形モデル

離散型の応答変数も扱えるように線形回帰モデルを拡張したのが一般化線形モデル(generalized linear model)でしたね。 アウトカムが2値変数の場合に用いられるロジスティック回帰モデル(logistic regression model)と、アウトカムが少ない回数の場合に用いられるポアソン回帰モデル(poisson regression model)を紹介しました。

necostat.hatenablog.jp

necostat.hatenablog.jp

データ分析全般

ひとくちにデータ分析と言っても、その目的は様々です。データに溺れて進む方向が分からなくなってしまわないようにしたいです(言うは易し、ですが)。

necostat.hatenablog.jp

necostat.hatenablog.jp

データ分析はデータだけを見ているわけではありません。必ずと言っていいほど、何らかの「仮定・仮説」(=モデル)を通してデータを見ています。 そして、この仮定が適切かどうかをデータのみで判断することはできません。そこで生きてくるのが、その領域の専門家の知識と経験だと思います。

おわりに

  • 統計学で大事な基礎用語・知識はまだまだあると思いますが、「高校生のための」と言う割には結構詰め込んだんじゃないかなと思ってます。お疲れ様でした!
  • 高校生でも使えるデータ分析環境があるので、次回次々回で紹介したいと思います。「え、高校生だから実際にデータ分析する機会なんてない...」と思ってるあなた!機会がないんじゃなくて、使える環境がないだけかもしれませんよ?部活とか文化祭とか、分析するネタは高校生にもあると思います。

高校生のためのデータ分析入門 (27):量的変数を比較するとき、基本はt検定!

数学が苦手なうちのJKに、将来必要となるかもしれないデータ分析への抵抗感をなくしてもらう目的で記事を書くことにしました。

前回:高校生のためのデータ分析入門 (26):カテゴリー変数を比較するとき、基本はカイ2乗検定! - ねこすたっと

量的変数で比べたいのは代表値

例えば、隣のクラスと数学の点数を比べるとき、クラスの平均点で比べることが多いんじゃないでしょうか。 2グループ間で量的変数の平均値を比較するときに用いられる検定t検定(t test)です。 カイ2乗検定は3つ以上のグループを一度に比較でも用いることができましたが、t検定は3つ以上のグループを一度に比較することはできません(2つを選んで比較する必要があります)。

以前、P値の計算方法についていくつかパターンを紹介しましたね。 t検定(t test)は、検定統計量と確率分布を使ってP値を求めるタイプの検定です。

T統計量

用いられる統計量(T統計量)は、 2つの標本の平均を x_1, x_2、分散を  s_1^2, s_2^2 、標本数を  n_1, n_2 とすると、次の式で計算されます*1

 
\begin{aligned}
T &= \frac{| \overline{x}_1 - \overline{x}_2 |}
{\sqrt{\frac{s_1^2}{n_1} + \frac{s_2^2}{n_2}}}
\end{aligned}

2グループの平均値の差が大きくなればなるほど、T統計量は大きくなります。 また、平均の差が同じでも、分布のバラツキが小さいほどT統計量は大きくなります平均の差を分布の分散を基準にして定量化しているわけです。

正規分布の話をしたときに、「標準化正規分布」というものが出てきました。変数Xが正規分布に従うとき、下のように変形することでZはN(0,1)に従う、というものです。

 
\begin{aligned}
Z &= \frac{X - \mu}{\sigma}
\end{aligned}

これは「変数Xが平均μからどれくらい離れているか」を、正規分布の標準偏差σを基準にして定量化するというものでした。T統計量の考え方も同様です。

t分布

しかし、T統計量からP値を計算するときに用いる確率分布は標準正規分布ではありません。下図の赤線グラフのような形をしている、t分布(t distribution)という確率分布です。

正規分布(青)によく似ていますが、裾が正規分布よりも厚くなっています(つまり、中心から外れた値を取る確率が正規分布よりも多い)。 これは、母集団の分散が分かっている値として与えられているか(→正規分布)、標本から推定しないといけないか(→t分布)の違いです。

カイ2乗分布と同じように、t分布も自由度(degree of freedom)によって形状(裾の厚み)が変わります。自由度が大きくなり、裾が薄くなって正規分布に近づいていきます(下図)。

自由度をどう決めるかはちょっと複雑なので、ここでは説明しませんが、サンプル数が多いほど、使用するt分布の自由度も大きくなるとだけ理解しておいてください。

標本から得られたT統計量よりも極端な値になる確率、つまりP値は、t分布で下の部分の面積として求めることができます。下の例では、両側P値を求めています(P値の両側・片側の話はこちらの記事に追加しました)。

t検定を使うまでのステップ

順序変数にt検定は使えない

t検定は平均値を比較する検定方法なので、平均値に意味がないような変数の場合に用いることは適切ではありません

例えば、「猫が好きですか?」という質問に対して、

  • 0 = まあまあ好き
  • 1 = 結構好き
  • 2 = モフモフ〜ごろごろ〜(=めっちゃ好き)

で回答してもらったとします。回答は明らかに順序がありますが、0→1と1→2が同じ程度を意味しているとは限りません。1単位の変化の意味が異なるので、平均を取っても意味がありません。このように「順序はあるが、割り振られた数値の差に意味がない変数」を、順序変数(ordinal variable)と呼びます。 順序変数を比較するときは、マンホイットニーU検定(Mann-Whitney U test)****2という検定方法が使われることが多いです。

変数の分布か正規分布かどうか

t検定において、T統計量がt分布に従うためには、変数Xが正規分布することが必要とされます。そのため、t検定を使う前に、まず変数Xが(それぞれのグループで)正規分布しているかどうかを検定するように推奨している本が多いと思います。

しかし、正規性を確認する検定は必要ないと説明しています。理由は、

  • t検定は正規分布から多少ズレていても問題なく使える
  • サンプル数が多かったら、標本平均の分布*3は正規分布とみなせるようになる

などです。なので、ヒストグラムなどで概ね山が1つに見えていればOKです。

もし、ヒストグラムで正規分布に見えない分布で、サンプル数もそんなに多くないときは、先程紹介したマンホイットニーU検定を用います。この検定は、変数について全体の中での順序だけしか考慮しないので、正規分布かどうかを気にする必要がなくなります。

2つの標本の分散が等しいかどうか

最初の方で「差をバラツキで定量化する」という話をしました。比べたい2つのサンプルの分散が同じ場合・違う場合で、T統計量の分母の計算が少し変わります。

分散が同じ値として計算するt検定をスチューデントのt検定(Student's t test)、分散か異なっているとして計算するt検定をウェルチのt検定(Welch's t test)と言います。

まず2つの標本分散が同じかどうかを検定で確かめてから、どちらのt検定を使うか選ぶことを推奨している本も多いですが、常にウェルチのt検定を使って問題ありません

おわりに

*1:Welchのt検定の場合

*2:別名:ウィルコクソン順位和検定, Wilcoxon rank sum test

*3:標本を抽出して平均を取ることを繰り返したときの標本平均の分布

高校生のためのデータ分析入門 (26):カテゴリー変数を比較するとき、基本はカイ2乗検定!

数学が苦手なうちのJKに、将来必要となるかもしれないデータ分析への抵抗感をなくしてもらう目的で記事を書くことにしました。

前回:高校生のためのデータ分析入門 (25):P値はどうやって計算するの? - ねこすたっと

ほとんどはカイ2乗検定でOK!

前回、サイコロが公平かどうかを確かめる方法として、カイ2乗検定を紹介しました。 まずはカイ2乗分布とはどんな確率分布なのか見てみましょう。

そもそもカイ2乗分布って?

カイ2乗分布(chi-square distribution)は、標準正規分布に従う独立な変数を2乗して足してできた変数が従う確率分布です。つまり、 X_i \sim N(0,1) のとき、 \sum X_i^2 はカイ2乗分布に従う、ということです。

カイ2乗分布について、押さえておくべき特徴は次の2つ!

  • 変数が正の範囲にしか分布しない(2乗して足したものは必ず正だから)
  • 足し合わせる個数によって形が変わる(足す個数kが大きい方が広くバラつきそう)

確率密度関数はちょっと複雑なので紹介しませんが、足す個数kの値によってどのように分布の様子が変わるのか、下の図をみてください(wikipedia - カイ2乗分布)。

このkは、カイ2乗分布の形状を決めるパラメータで、自由度(degree of freedom, df)と呼ばれます。自由度kのカイ2乗分布を  \chi(k) と書くので、数式を使うと、

 
\begin{aligned}
X_i &\sim N(0,1) \\
\sum_i^k X_i^2 &\sim \chi(k)
\end{aligned}

と書くことができます。

カイ2乗検定で期待値からのズレを評価する

カイ2乗検定(chi-square test)は、理論値・期待値(E)と実際の観測値(O)から、カイ2乗統計量を計算し、これがカイ2乗分布に従うことを使ってP値を求めることを前回説明しました。例えば、カテゴリー数がm個の場合は、下の関係が成り立ちます。

 
\begin{aligned}
X^2 &= \sum_i^m \frac{(O_i - E_i)^2}{E_i} \sim \chi(m-1)
\end{aligned}

ここで、自由度がmではなくm-1になっている理由は、「m-1のカテゴリーに入る度数が決まったら、残り1つのカテゴリーに入る度数は自動的に決まるから」です。自由度の説明がもう少し読みたい人は、下の記事を参考にしてください。

best-biostatistics.com

これを使って、カテゴリー変数をどのように比較できるのか見ていきましょう。 例えば、文系クラスと理系クラスで猫好き・犬好きを調査したら、下の表になったとしましょう。

「文系と理系で猫派・犬派の割合が変わるか」ということを検証したいときは、まずこれを否定した帰無仮説を考えるんでしたね。帰無仮説は「文系と理系で猫派・犬派の割合は変わらない」です。では、帰無仮説が正しいとき、さっきの表がどうなっているはずでしょうか?

文系・理系で猫派の割合が変わらないと仮定すると、それぞれの猫派の割合は学年全体における猫派割合  \frac{190}{250} と同じになるはずです。文系は100名いるので、猫派の人数は、100×190/250 = 76名いるはずです。この76名が、帰無仮説のもとでの期待値ということになります。

「文系・猫派」の期待値は、(文系の周辺度数*1=100)×(猫派の周辺度数=190)/(全体数=250)で求められました。 「文系・犬派」、「理系・猫派」、「理系・犬派」も同じように求めることができますが、実際には「文系・猫派」が求まれば、他のマス目に入るべき人数は自動的に決まります(例:「文系・犬派」= (文系の周辺度数=100)- (「文系・猫派」の期待値=76)= 24)。

期待値を表にまとめると、

となります。観測値と期待値が分かればカイ2乗値は計算できますね。

 
\begin{aligned}
X^2 &= \sum_i^m \frac{(O_i - E_i)^2}{E_i} \sim \chi(m-1) \\
&= \frac{(90-76)^2}{76} + \frac{(100-114)^2}{114} + \frac{(10-24)^2}{24} + \frac{(50-36)^2}{36} \\
&= 17.90936
\end{aligned}

X2は自由度1のカイ2乗分布に従うので、これを使って  P=2.3×10^{-5} と計算できます(つまり、割合は有意に異なっている)。 なぜマス目は4つあるのに自由度は1なのかというと、先程説明したように1つのマス目が決まれば残りは自動的に決まるからです。

ちなみに、「文系・理系で猫派・犬派の割合が異なっているか」ということと、「猫派・犬派で文理の割合が異なっているか」ということは全く同じことです(実際にX2を計算しても同じになります)。なので、どちらの項目から捉えるかを区別せずに「2つの項目の間に関連性があるか」と読み換えると良いです。

カテゴリー数が多い場合は?

例えば、「文系・理系」ではなく「1組〜5組」、あるいは「猫派・犬派」ではなく「猫派・犬派・爬虫類派」のように、カテゴリー数が3つ以上になってもカイ2乗検定は使えます。 それぞれの項目から2つのカテゴリーを選んできて比較するという意味ではなくて、クラスによって「猫派・犬派・爬虫類派」の分布が変わるか、もう少し言えば「2つの項目(クラス・何派か)の間には関連性があるのか」を検定できる、という意味です。

関連性を確かめたい2つの変数のカテゴリー数がm, nであった場合、m×n個のマス目がある表ができます。さっきと同じように、期待値を求めて、観測値との違いをX2値として計算してやればいいです。 ただし、カイ2乗分布は、自由度(m-1)×(n-1)のものを使います

例えば、1つ目の項目が「1組〜5組」の5カテゴリー、2つ目の項目が「猫派・犬派・爬虫類派」の3カテゴリーなら15マスありますよね。この15マスについて、観測値と期待値の差をもとにX2値を計算して、自由度が(5-1)×(3-1)=8のカイ2乗分布に従うことを利用してP値を計算します。

m=n=2とすると、2×2表のときに自由度1のカイ2乗分布を用いたことと整合性があることが確認できますね。

カイ2乗検定が使えないとき

期待されるマス目の度数が小さい場合

期待される度数が小さいときは、カイ2乗検定が不正確になるので使用を避けるべきと言われています。期待度数が少ない基準としては、下のものが一般的です。

  • 期待度数が 5 以下のマスが全体の 20% 以上ある場合
  • 期待度数が 1 以下のマスが 1 つでもある場合

この条件に引っかかってしまう場合は、カイ2乗検定ではなくフィッシャー正確検定(Fisher exact test)を使うように勧められることが一般的です。これには色々と問題もありそうですが、検定の名前くらいは覚えておきましょう。

同じ人に2回調査をしている場合

例えば、学校で「世界ネコ歩き(岩合光昭さん・NHK)」の鑑賞会があったとします。見る前と見た後に、40人のクラスメートに猫派・犬派を聞いたとします。

見る前から猫派だった人は、当然見た後も猫派ですよね。それを無視して、「見る前後で関連がない」として期待値を求めることには意味がありません。文系・理系で比べたときは1人につき1回しか調査しなかったのでこのような問題は起こりませんでしたが、「今回は同じ人に2回調査をしている」という点がポイントです。同一対象者の前後を比較する場合は、データの中に対応関係(ペアとなる関係)が含まれることになります。このようなデータを「対応のあるデータ(paired data)」と呼びます。 対応のあるデータの例としては、前後比較の他に、双子をペアにして調査するケースがあります。

対応のあるデータで割合を比べるときには、マクネマー検定(McNemar test)を用います。詳細は割愛しますが、名前だけでも覚えておくといいでしょう。

おわりに

*1:そのカテゴリーに関しての合計数のこと。

高校生のためのデータ分析入門 (25):P値はどうやって計算するの?

数学が苦手なうちのJKに、将来必要となるかもしれないデータ分析への抵抗感をなくしてもらう目的で記事を書くことにしました。

前回:高校生のためのデータ分析入門 (24):離散型アウトカムの回帰モデル(後編) - ねこすたっと

おさらい:P値とは

以前、統計的仮説検定について説明しましたが、覚えてますか?自信がなければ、下の記事を復習してください。

necostat.hatenablog.jp

P値とは「帰無仮説が正しいという仮定のもとで、手元のデータ、あるいはそれよりも極端なデータが発生する確率」でしたね。P値が事前に決めた水準(例:5%)より小さければ、帰無仮説を捨てて対立仮説を採用します。P値が小さくなければ、判定を保留にします。

比較したい項目や測定条件によって、どのような検定手法を用いてP値を計算するかは異なります。 例えば、ある量的変数の平均値が異なるかどうかを知りたい場合は、

  • その量的変数は正規分布しているとみなすことができますか?
  • 比較したいグループの数はいくつですか?
  • グループごとに変数の分散は同じですか?

のようなチェックリストがあって、それによって用いるべき検定手法が決まります(フローチャートを紹介している資料も多くあります)。

個々の検定手法を見る前に、どうやってP値を計算するのか、概要を説明します。

1. 直接計算する方法

例えば、

白球と赤球が入った袋があります。「球を1個取り出して、色を記録し、球を戻す」ということを5回行ったところ、白球が4回、赤球が1回でした。白球と赤球がちょうど半分ずつ入っているとしたとき、この結果が得られる確率を求めなさい。

みたいな問題、ありそうですよね〜。「白球と赤球がちょうど半分ずつ」であれば、どちらの色も出現確率は1/2なので、5回のうちどこで白球が出現するかを考えれば、

 
\begin{aligned}
_5C_4 \left( \frac{1}{2} \right)^4 \left( \frac{1}{2} \right) &= \frac{5}{32}
\end{aligned}

と計算できますね。 さらに極端な例、つまり、5個全て白球である確率も計算できるはずです。

 
\begin{aligned}
_5C_5 \left( \frac{1}{2} \right)^5 &= \frac{1}{32}
\end{aligned}

こうすれば、「白球と赤球がちょうど半分ずつ」であると仮定したときに、「手元のデータ(白球4回、赤球1回)、もしくはもっと極端なデータ(白球5回)が観測される確率」を求めることができます(答え:3/16≒0.19)。そう、これってP値そのものですよね。

このように、与えられた仮定のもとで直接確率を計算する検定方法を、総じて正確検定(exact test)と呼んだりします。「フィッシャー正確検定」が代表例です。サンプル数が少ないうちはいいんですが、サンプル数が多くなると手計算でできなくなることはもちろんのこと、コンピュータを使っても時間がかかりすぎてしまうことがあります。 そんなときは、次に紹介する方法を用いて計算します。

2. 統計量が従う確率分布から計算する方法

統計量(statistics)とは、「決められた計算方法を用いて標本(サンプル)データから計算された数値」です*1のことです。

例えば、「標本平均」は「サンプルデータを全て足して、サンプル数で割る」という決められた方法で計算された値なので、統計量の1つです。データを要約して簡潔に記述することが目的の統計量なので、要約統計量(summary statistics)と言います。

統計量は、母集団の特性を推測するためにも用いられます。例えば、

 
\begin{aligned}
\frac{\sum_i^n (x_i - \bar{x})^2}{n-1}
\end{aligned}

は母集団の分散を推測するために用いられる統計量です。このような統計量を、推測統計量(inferential statistics)と言います。先程の標本平均は、要約統計量であると同時に推測統計量でもある、というわけです。

ちょっと寄り道しましたが、統計的検定の多くは統計量を用いてP値を求めます。例えば、データの分布が期待される分布(あるいは、理論的な分布)と乖離しているかどうかを調べる際に用いられる「カイ2乗検定」が、その代表です。

例えば、サイコロが公平であれば、600回振れば各目が100回ずつ出現することになりますよね(理論値)。もし、観察された目の回数が下の表のような結果だったとき、このサイコロは公平なものだと言えるでしょうか?

「公平かどうか」を統計的に判断する方法が、カイ2乗検定です。この検定では、まず、下の数式で表されるカイ2乗値 X2 *2 を計算します。ここで、Oは観測された回数、Eは理論値(=100回)、mはカテゴリー数(=6)です。

 
\begin{aligned}
X^2 &= \sum_i^m \frac{(O_i - E_i)^2}{E_i}
\end{aligned}

実際にさっきの結果を使って計算すると、

 
\begin{aligned}
X^2 &= 1 + 0 + 4 + 1 + 0 + 4 \\
&= 10
\end{aligned}

となります。理論値からの乖離が大きくなるほど、X2も大きくなります。 そして、X2も「標本から決まった方法で求められた値」なので、統計量ですね。統計的検定に使われる統計量なので、検定統計量(test statistics)といいます。

この実験を繰り返し行えば、その都度サイコロの目の出現の仕方は変わり、そこから計算されるX2も変わります。「サイコロの目は全て同じ確率で出現する」という仮説のもとでは、出た目の回数だけでなく統計量X2も確率変数ということです。 求めたX2は「カイ2乗分布*3」に従うことが分かっていますので、カイ2乗分布を使ってX2が求めた値よりも大きい値を取る確率を求めればP値が計算できます。

ここではP=0.075と計算されました。有意水準を5%とすると、公平なサイコロの出る目の分布と観測された分布は異なるとは言えない、という結論になります。

3. 元の標本から新しい標本を作成する方法

「ブートストラップ法を用いた仮説検定」と「並べ替え検定」が代表です。

ブートストラップ法を用いた仮説検定

ブートストラップ法(bootstrap method)とは、

  1. 母集団からランダムに抽出された標本(元のサンプル)を、
  2. 今度は母集団と見立てて、
  3. 別の標本(ブートストラップサンプル)を大量に作成して用いる方法

です。ブートストラップサンプルの標本数は元のサンプルと同じで、元のデータから重複を許して抽出します。つまり、同じデータが2回以上抽出されてもOKです。

例えば、A班とB班でテストの点数が下のようだったとします。

  • A班(6人):64, 68, 71, 71, 86, 87(平均 74.5)
  • B班(5人):67, 73, 76, 85, 92(平均 78.6)

もし、2つのグループの元となった母集団に差がないとしたら、平均値の差が4.1点以上離れる可能性(=P値)はどれくらいでしょうか?

「2つのグループの元となった母集団に差がない」ということは、「2つのグループが同じ母集団から選ばれたサンプルである」ということですから、2つの標本を合わせた集団を帰無仮説のもとでの擬似母集団とみなしましょう。ここからA班6人、B班5人をランダムに選びます。一度選ばれた人がもう1回選ばれてもOKですし、逆に選ばれない人がいてもOKです。極端に偏りがあるものや、元のサンプルと全く同じになっても構いません。選ばれたブートストラップサンプルごとに、平均値の差を計算する、ということを1000回*4繰り返します。

下は得られた1000個の値のヒストグラムです(赤線は観察された差 = |4.1|)。

これは、帰無仮説のもとで観察される平均値の差の分布とみなすことができます。1000個の値の中で、実際に観察された平均の差よりも差が大きかったものは748個あったので、P=748/1000=0.748と計算されます。B班の方が平均点が高かったですが、統計的に有意な差と言えるほどではなかったということです。

「手元のサンプルを母集団のみなして、そこから複製するなんてズルくない?」と思うかもしれませんが、元のサンプルで差が小さければ、大量に複製したところで差が小さいブートストラップサンプルが大半を占めることには変わりありません。 また、出来上がる1000個のブートストラップサンプルは実行するたびに変わります。もう1回やったらP=0.73かもしれません*5

応用範囲は広い方法ですが、実行するには統計ソフトが必要です。

並べ替え検定

並べ替え検定(permutation test)はもっとシンプルです。こちらは復元抽出を繰り返すのではなく、「差がない」と仮定してひとつにまとめた11人を、A班6人とB班5人に分ける全ての組み合わせを考えます。並べ替える*6だけなので、同じ人が2回含まれたり、含まれない人が出たりすることはありません

それぞれの組み合わせごとに、A班とB班の平均の差を計算します。 さっきの例では _{11}C_6=462 通りの組み合わせがあるので、この462通りの中で実際に観察された平均差よりも大きい差が観察された割合がP値です。

ブートストラップ法も並べ替え検定も、元の標本から新しい擬似標本を作っているので、再サンプリング法(resampling method)と呼ばれます。

おわりに

  • 統計の基本的なことを説明したら、色々な検定方法が紹介されて、その後で回帰分析に入る、という流れが多いですが、ここでは検定は後回しにしました。
  • 単純なグループ間比較だけでは何とも言えない状況が多いこと、そもそも事前に明確な仮説がないのに何でもかんでも検定しちゃう人が多いこと、など理由は色々ありますが、1番の理由はややこしい話が続くことでデータ分析に抵抗感が芽生えることを心配したからです。 * 次回:高校生のためのデータ分析入門 (26):カテゴリー変数を比較するとき、基本はカイ2乗検定! - ねこすたっと

*1:Wikipedia - 統計量では、「目的に応じた統計学的なアルゴリズム(関数)を適用し得た、データの特徴を要約した数値」と説明されています。

*2:エックスじゃなくてカイと呼んでください。

*3:正確には自由度df=6-1=5のカイ2乗分布。

*4:2000回でも5000回でもいいが、少なすぎるのはダメ

*5:コンピュータが使う乱数を毎回同じにセットすることで再現性を確保できる。

*6:この例では組み合わせを変えるだけでいいので、順序は関係ありません

高校生のためのデータ分析入門 (24):離散型アウトカムの回帰モデル(後編)

数学が苦手なうちのJKに、将来必要となるかもしれないデータ分析への抵抗感をなくしてもらう目的で記事を書くことにしました。

前回:高校生のためのデータ分析入門 (23):離散型アウトカムの回帰モデル(前編) - ねこすたっと

平均値が大きくない個数・回数をモデル化する

前回、線形回帰モデルが上手く当てはまらない例として、2値型の応答変数に対してロジスティック回帰モデルを使うことを説明しました。 今回は、別の例として、「平均値が大きくない個数・回数」をモデル化してみます。

小さい非負整数のモデル化

例えば、あなたが毎日校内の自販機を見回って、おつり取り忘れをチェックしているとしましょう。頑張って見回ると2日に1件くらいは取り忘れがあるようです。過去1年分のデータを使って、気温と取り忘れ件数の関係を調べたいと思います。

  • 説明変数X:最高気温
  • 応答変数Y:1日の取り忘れ件数

応答変数は0以上の整数(非負整数)ですが、平均が小さいので正規分布を使ったモデル、つまり線形回帰モデルに当てはめるのは難しそうです。

期待値を説明変数の関数で表す

まずは、線形回帰モデルと同じように、期待値を説明変数の関数で表してみます。

 
\begin{aligned}
E[Y_i|X_i] &= \beta_0 + \beta_1 X_i
\end{aligned}

としたいところですが、2値変数のモデル化と同じく問題が...。

応答変数は取り忘れ件数なので、左辺の期待値は0以上になります。これに対して、右辺  \beta_0 + \beta_1 はβやXの値によっては負になることがありえます。負になってしまった値は、平均取り忘れ件数として解釈できません。

対数変換でつなぐ!

期待値が割合を表しているとき、つまり0から1の範囲しか取らないときは、ロジット変換でつなぐことを紹介しました。

necostat.hatenablog.jp

「件数の平均」のように、期待値が正の数しかとらないときは、下のように期待値を対数変換すれば上手くつなげられます

 
\begin{aligned}
\log \left( E[Y_i|X_i] \right) &= \beta_0 + \beta_1 X_i
\end{aligned}

対数関数は、単調増加関数で、正の数を真数(logXの中身X)にとり、変換後の範囲は-∞から+∞をカバーします。 \beta_0 +\beta_1 X がどんな値になろうとも、対応する  E[Y|X ] は1つに決まります。

当てはめるとこんな感じ。

期待値と観測値をポアソン分布で結ぶ

期待値が同じでも実際に観察される値は同じとは限りません。例えば、気温から予想される取り忘れ件数が1件だったとしても、実際には0件のこともあれば、(稀ですが)5件もあることもありえます。このギャップを埋めるのが「応答変数はどのような確率分布にしたがうと考えるか」で、ロジスティック回帰モデルでは、2値型の応答変数が二項分布(ベルヌーイ分布)に従うと仮定しました。今回は「平均値の小さい個数・回数」なので「ポアソン分布に従う」と仮定するのが良さそうです。

まとめ:ポアソン回帰

今回の例で想定した以下の式で表されるモデルは、ポアソン回帰モデル(Poisson regression model)と呼ばれます。見やすさのためE[Y|X] = λと書き直しました。

 
\begin{aligned}
\log \left( \lambda_i \right) &= \beta_0 + \beta_1 X_i \\
Y_i &\sim Poisson(\lambda_i)
\end{aligned}

これを日本語で噛み砕くと、

  • 説明変数  X_i の線形関数として平均件数  \lambda_i が決まる。つまり、それぞれの日は  X_i に応じて  \lambda_i が与えられる。
  • 説明変数と平均係数を直接はつなげないので、対数変換を介してつなぐ。
  • 応答変数  Y_i は、平均件数  \lambda_i をパラメータとするポアソン分布に従う。

図で表すとこんな感じです。

係数はどう解釈したらいいの?

線形回帰モデルと同様、E[Y|X=x+1](=λ1)とE[Y|X|x](=λ0)の差を計算してみます。対数を指数に直してやると、

 
\begin{aligned}
 \lambda_1 &= e^{\beta_0 + \beta_1 (x+1)} \\
 \lambda_0 &= e^{\beta_0 + \beta_1 x} \\
\end{aligned}

指数関数同士の引き算になって、上手く整理できません。

そこで、ロジスティック回帰モデルのときと同じように、期待値の対数で計算してみましょう。

 
\begin{aligned}
\log \left( \lambda_1 \right) &= \beta_0 + \beta_1 (x+1) \\
\log \left( \lambda_0 \right) &= \beta_0 + \beta_1 x \\
\end{aligned}

第1式から第2式を引くと、

 
\begin{aligned}
\log \left( \lambda_1 \right) - \log \left( \lambda_0 \right)  &= \beta_1
\end{aligned}

となります。左辺をlogA-logB=log(A/B)で整理すると、

 
\begin{aligned}
\log \left( \frac{\lambda_1}{\lambda_0} \right) &= \beta_1 \\
\frac{\lambda_1}{\lambda_0} &= e^{\beta_1}
\end{aligned}

となりました。

ここで、左辺は「X=x+1のときの平均件数」と「X=xのときの平均件数」の比ですので、係数βを指数変換したもの  e^{\beta} を使えば、「説明変数が1単位変化したときに、平均件数が何倍になるか」を推定できることになります。

ところで、今回の例の「1日あたりのおつり取り忘れ件数」は、「ある一定期間において観察される数量」ですので、「率」になります(割合と率の違いはこちらを復習!)。この言葉を使えば、 e^{\beta} は「説明変数が1単位変化したときの率比(rate ratio)と解釈できる」と言うことができます。

おわりに