0

ピアソン相関を計算しています。最後に、以下のような結果 (correlation1) が得られました。相関 1 の結果として、2 番目の係数がすべて 0.0 になるのはなぜだろうか。説明できる人はいますか?さらに、相関コードの動作が遅いです。どうすれば速くできますか?

結果 (サンプル):
(0.52543523179249552, 0.0), (0.52543905756911169, 0.0), (0.52544196572206603, 0.0), (0.52545010637443945, 0.0)...

from scipy.stats import pearsonr

s1_list = []
s2_list = []
s3_list = []
s4_list = []

zip_list1 = []
zip_list2 = []

correlation1 = []
for x, y in zip(speed1_list, speed2_list):
    zip1 = {"s1": float(x), "s2": float(y)}
    s1_list.append(zip1["s1"])
    s2_list.append(zip1["s2"])
    zip_list1.append(zip1)
    correlation1.append(pearsonr(s1_list,s2_list))

print correlation1

入力:

speed1_list: [113.0, 116.0, 120.0, 120.0, 117.0, 127.0, 124.0, 118.0, 124.0, 128.0, 128.0, 125.0, 112.0, 122.0, 125.0, 133.0, 128.0, 129.0, 126.0, 123.0, 120.0, 118.0, 114.0, 119.0, 129.0, 127.0, 128.0, 122.0, 120.0, 125.0, 119.0...]

speed2_list: [125.0, 123.0, 120.0, 115.0, 124.0, 120.0, 120.0, 119.0, 119.0, 122.0, 121.0, 116.0, 116.0, 119.0, 116.0, 113.0, 113.0, 115.0, 120.0, 122.0, 122.0, 113.0, 118.0, 121.0, 120.0, 119.0, 116.0...]

相関1:(0.52543523179249552, 0.0), (0.52543905756911169, 0.0), (0.52544196572206603, 0.0), (0.52545010637443945, 0.0)...

4

1 に答える 1

0

pearsonr functionのドキュメントを読むと、2 番目の項が、データセット間のピアソンの相関が 0 に等しい確率を与える p 値であることがわかります。

サンプル リストでコードを実行すると、0 の p 値が 1 つだけ得られます。

相関1 =[(nan, nan), (-1.0, 0.0), (-0.99946642948624609, 0.020797462218684917), (-0.87259228616792028, 0.12740771383207972), (-0.82714719627765909, 0.083995277603981247), (-0.58025386521762756, 0.22730335863992135), (-0.57868746304695651, 0.17345428063365897), (-0.53247171319158504, 0.17427615080621298), ...

しかし、あなたが与えた値はcorrelation1、相関関係を非常に正確にするのに十分なサンプルがあるため、p値が0であるリストのさらに先にあると思います.

于 2016-02-18T13:11:22.530 に答える