python で 2 つの配列間の相関関係を取得するために、次を使用しています。
from scipy.stats import pearsonr
x, y = [1,2,3], [1,5,7]
cor, p = pearsonr(x, y)
ただし、ドキュメントに記載されているように、返される p 値はpearsonr()
500 を超えるデータセットでのみ意味があります。小さなデータセットに適した p 値を取得するにはどうすればよいですか?
私の一時的な解決策:
線形回帰について調べた後、基本的にフィッシャー変換を使用して z スコアを取得し、そこから p 値を計算する独自の小さなスクリプトを作成しました。
import numpy as np
from scipy.stats import zprob
n = len(x)
z = np.log((1+cor)/(1-cor))*0.5*np.sqrt(n-3))
p = zprob(-z)
できます。ただし、 で与えられる p 値の方が妥当かどうかはわかりませんpearsonr()
。この機能を既に備えている Python モジュールはありますか? SciPyまたはStatsmodelsで見つけることができませんでした。
明確にするために編集します。
私の例のデータセットは単純化されています。私の実際のデータセットは、10 ~ 50 の値の 2 つの配列です。