統計分析Pythonスクリプト例
サンプルファイルは自由に御利用下さい。
グラフ描画、統計量の計算、帰無仮説の検定、ランダマイゼーション検定、最尤法、ベイズ分析
統計学の考え方の説明を<岡本安晴「データを使いこなすための統計入門」22世紀アート>で行っている。
Excelファイルの読み込みとファイル名入力ダイアログウィンドウのスクリプトの説明のためのウェブサイトを用意している。
Excelファイルの読み込みにおいてpnadasを用いており、pandasはExcelファイルの読み込みにおいてxlrdモジュールを用いている。したがって、これら2つのモジュールのインストールが必要である。例えば、pipコマンドでインストールするときは
pip install
pandas xlrd
としておけばよい。
なお、Pythonにおけるテキストファイル入出力の説明を<岡本安晴「いまさら聞けないPythonでデータ分析」丸善出版>第3章で行っている。
Pythonによるグラフ描画例を示す。
ヒストグラム、ヒストグラム(NFD版)、箱ひげ図、箱ひげ図(NFD版)、
折れ線グラフ、折れ線グラフ(NFD版)、散布図、散布図(NFD版)
棒グラフ、棒グラフ(NFD版)、帯グラフ、帯グラフ(NFD版)、円グラフ、円グラフ(NFD版)
データの分布の様子を表す統計量を求める。
1変量統計量、1変量統計量(NFD版)、順序統計量、順序統計量(NFD版)、
データからの情報を、データ生成モデルを設定して得る方法がある。データに確率的な変動が見られる場合、モデルとして確率モデルが設定されることがある。調べたいことに関わる確率モデル(帰無仮説と呼ばれる)を設定して、帰無仮説から導かれるデータの確率に基づいてデータから情報を得る方法があるが、帰無仮説の検定と呼ばれている。この方法において算出されるp値と呼ばれるものがあるが、これについてのウェブサイトは別に用意している。
独立なサンプルの平均値の差、繰り返し/関連のある測定サンプルの平均値の差
相関係数の検定、2×2分割表の検定(Fisher’s Exact Test)
シミュレーション:2つの独立なサンプル、シミュレーション:相関係数
確率モデルのパラメータ値の推定法として尤度関数を最大にする値を推定値とする方法は最尤法として知られている。最尤法による推定値は、データ数が十分に多い場合に真値を平均値とする正規分布に近付くが、これをシミュレーションによって確かめてみる。また、モデル間の関係が階層構造をなす場合、モデルの比較を尤度比で行う方法があるが、この簡単な場合の例を示す。
帰無仮説の検定、あるいは最尤法では、データ生成モデルはパラメータをもつ確率モデルとして設定され、パラメータに対してデータの生成確率が決まる。パラメータに対しても確率分布を想定し、パラメータとデータの同時確率を考えて分析を行う方法がある。このとき、データを条件とするパラメータの条件付確率分布を得ることができるが、この方法はベイズ分析と呼ばれている。データ分析の確率モデルを、パラメータに対して決まるデータの生成モデルから、パラメータの確率分布をも含むモデルに拡張することにより、複雑なモデルもシミュレーションを使って分析できるようになった。モデルの拡張は以下のように行われる。
パラメータに対するデータの生成確率をで表す。最尤法では、データDに対してをの関数と見てを最大にするの値が最尤推定値として求められ、は尤度関数と呼ばれている。ベイズ分析では、パラメータとデータの同時確率を考え、次式で与えられる(Gelman et al. 2014, “Bayesian Data Analysis, 3rd ed., p. 6;岡本安晴、2019「いまさら聞けないPythonでデータ分析」、p. 172)。
ここで、はパラメータの確率分布である。
このとき、データDが与えられたときのパラメータの条件付確率分布は次式で与えられる(Bayes’ rule)。
パラメータの確率分布は事前分布、は事後分布と呼ばれている。
式(B.2)を、Dを固定しての関数と見たとき、は定数なので、式(B.2)は次式の形に書ける。
記号 は、左辺が右辺に比例することを表す。
ベイズ分析とは、事後分布に基づく分析であるが、数学的分析が難しくなり、これを避けるために可能な場合は共役分布という特殊な分布が用いられたが、今日ではMCMCサンプリングというシミュレーションで分析できるようになり、数学的に扱えるかどうかではなく、シミュレーションプログラムが書ければ分析できる時代になった(Lambert, 2018, “A Student’s Guide to Bayesian Statistics”)。いろいろなモデルの分析が可能になったので、1つのデータに対して複数のモデルによる分析が勧められている(Gelman et al. 2021, “Regression and other stories”)。しかし、これは統計学の立場であろう。心理学など科学研究の背景にある理論を考えると、統計学的に可能なモデルをいろいろ試すということではなく、理論に基づくモデルとデータとの関係が分析されるということであろう。
いま、事前分布として一様分布(分布関数の値が定数値)をとると、
となる。このとき、事後分布はデータ生成モデルの下でデータDのみの影響を受ける(“Let the data speak for themselves”, e.g. Gelman et al. 2014, “Bayesian Data Analysis, 3rd ed. p. 51)。パラメータの区間が有限区間でないときは、一様分布に近い分布として分散の大きい正規分布あるいは指数分布などが用いられる。
これに対して、診断検査などでは検査対象母集団における確率分布として一様分布以外の事前分布が考えられるが、このとき診断検査の結果が事前分布の影響を無視できない例が示されている(岡本安晴、2014「心理学データ分析と測定」pp. 188-193)。
ベイズ分析のためのソフトとしてPyStan(Python用Stan)、PyMC3などがあるが、<岡本安晴「いまさら聞けないPythonでデータ分析」丸善出版>第9章で確率とベイズ分析の解説を行い、第10章〜第12章においてPyStanについて、第13章〜第15章においてPyMC3ついて説明している。
1変量正規分布、1変量正規分布(NFD版)、2変量正規分布、2変量正規分布(NFD版)
独立なサンプルの平均値の差、対応のあるサンプルの平均値の分析
繰り返し1要因分散分析(固定効果)、繰り返し1要因分散分析(変量効果)