Scipy-stats
SciPy-統計
すべての統計関数はサブパッケージ scipy.stats にあり、* info(stats)関数を使用してこれらの関数のかなり完全なリストを取得できます。 利用可能なランダム変数のリストは、statsサブパッケージの *docstring からも取得できます。 このモジュールには、多数の確率分布と成長する統計関数のライブラリが含まれています。
各単変量分布には、次の表で説明するように、独自のサブクラスがあります-
| Sr. No. | Class & Description |
|---|---|
| 1 |
rv_continuous サブクラス化を目的とした一般的な連続ランダム変数クラス |
| 2 |
rv_discrete サブクラス化を目的とした一般的な離散ランダム変数クラス |
| 3 |
rv_histogram ヒストグラムで与えられる分布を生成します |
通常の連続ランダム変数
確率変数Xが任意の値を取ることができる確率分布は、連続確率変数です。 location(loc)キーワードは平均を指定します。 scale(スケール)キーワードは、標準偏差を指定します。
*rv_continuous* クラスのインスタンスとして、 *norm* オブジェクトはそれからジェネリックメソッドのコレクションを継承し、この特定のディストリビューションに固有の詳細でそれらを完了します。
いくつかのポイントでCDFを計算するには、リストまたはNumPy配列を渡すことができます。 次の例を考えてみましょう。
from scipy.stats import norm
import numpy as np
print norm.cdf(np.array([1,-1., 0, 1, 3, 4, -2, 6]))
上記のプログラムは、次の出力を生成します。
array([ 0.84134475, 0.15865525, 0.5 , 0.84134475, 0.9986501 ,
0.99996833, 0.02275013, 1. ])
分布の中央値を見つけるには、CDFの逆関数であるパーセントポイント関数(PPF)を使用できます。 次の例を使用して理解しましょう。
from scipy.stats import norm
print norm.ppf(0.5)
上記のプログラムは、次の出力を生成します。
0.0
ランダム変量のシーケンスを生成するには、次の例に示すように、sizeキーワード引数を使用する必要があります。
from scipy.stats import norm
print norm.rvs(size = 5)
上記のプログラムは、次の出力を生成します。
array([ 0.20929928, -1.91049255, 0.41264672, -0.7135557 , -0.03833048])
上記の出力は再現できません。 同じ乱数を生成するには、シード関数を使用します。
均一な分布
一様分布は、一様関数を使用して生成できます。 次の例を考えてみましょう。
from scipy.stats import uniform
print uniform.cdf([0, 1, 2, 3, 4, 5], loc = 1, scale = 4)
上記のプログラムは、次の出力を生成します。
array([ 0. , 0. , 0.25, 0.5 , 0.75, 1. ])
離散分布の構築
ランダムなサンプルを生成し、観測された頻度を確率と比較しましょう。
二項分布
- rv_discreteクラス*のインスタンスとして、* binomオブジェクト*はそれからジェネリックメソッドのコレクションを継承し、この特定のディストリビューションに固有の詳細でそれらを完了します。 次の例を考えてみましょう。
from scipy.stats import uniform
print uniform.cdf([0, 1, 2, 3, 4, 5], loc = 1, scale = 4)
上記のプログラムは、次の出力を生成します。
array([ 0. , 0. , 0.25, 0.5 , 0.75, 1. ])
記述統計
Min、Max、Mean、Varianceなどの基本的な統計は、NumPy配列を入力として受け取り、それぞれの結果を返します。 * scipy.statsパッケージ*で利用可能ないくつかの基本的な統計関数を次の表に示します。
| Sr. No. | Function & Description |
|---|---|
| 1 |
describe() 渡された配列のいくつかの記述統計を計算します |
| 2 |
gmean() 指定された軸に沿って幾何平均を計算します |
| 3 |
hmean() 指定された軸に沿って調和平均を計算します |
| 4 |
kurtosis() 尖度を計算します |
| 5 |
mode() モーダル値を返します |
| 6 |
skew() データの歪度をテストします |
| 7 |
f_oneway() 一元配置分散分析を実行します |
| 8 |
iqr() 指定した軸に沿ってデータの四分位範囲を計算します |
| 9 |
zscore() サンプルの平均と標準偏差に関連して、サンプルの各値のzスコアを計算します |
| 10 |
sem() 入力配列の値の平均の標準誤差(または測定の標準誤差)を計算します |
これらの関数のいくつかには、 scipy.stats.mstats に同様のバージョンがあり、マスクされた配列で機能します。 以下に示す例でこれを理解しましょう。
from scipy import stats
import numpy as np
x = np.array([1,2,3,4,5,6,7,8,9])
print x.max(),x.min(),x.mean(),x.var()
上記のプログラムは、次の出力を生成します。
(9, 1, 5.0, 6.666666666666667)
T検定
TciがSciPyでどのように役立つかを理解しましょう。
ttest_1samp
スコアの1つのグループの平均のT検定を計算します。 これは、独立した観測値 'a’のサンプルの期待値(平均)が指定された母集団平均 popmean に等しいという帰無仮説の両側検定です。 次の例を考えてみましょう。
from scipy import stats
rvs = stats.norm.rvs(loc = 5, scale = 10, size = (50,2))
print stats.ttest_1samp(rvs,5.0)
上記のプログラムは、次の出力を生成します。
Ttest_1sampResult(statistic = array([-1.40184894, 2.70158009]),
pvalue = array([ 0.16726344, 0.00945234]))
2つのサンプルの比較
次の例では、同じ分布または異なる分布からの2つのサンプルがあり、これらのサンプルが同じ統計特性を持っているかどうかをテストします。
*ttest_ind* -スコアの2つの独立したサンプルの平均のT検定を計算します。 これは、2つの独立したサンプルの平均値(期待値)が同一であるという帰無仮説の両側検定です。 このテストでは、デフォルトで母集団の分散が同一であると想定しています。
同じ母集団または異なる母集団からの2つの独立したサンプルを観察する場合、このテストを使用できます。 次の例を考えてみましょう。
from scipy import stats
rvs1 = stats.norm.rvs(loc = 5,scale = 10,size = 500)
rvs2 = stats.norm.rvs(loc = 5,scale = 10,size = 500)
print stats.ttest_ind(rvs1,rvs2)
上記のプログラムは、次の出力を生成します。
Ttest_indResult(statistic = -0.67406312233650278, pvalue = 0.50042727502272966)
同じ長さの新しい配列を使用して、同じことをテストできますが、平均は異なります。 loc で別の値を使用し、同じ値をテストします。