2016-02-18 3 views
0

Я вычисляю Pearson Correlation. В конце у меня есть результат (корреляция1), как показано ниже. Интересно, почему у меня есть 0.0 для всего второго коэффициента в результате в корреляции1. Есть ли кто-нибудь, кто мог бы объяснить? Более того, мой корреляционный код работает медленно. Как я могу сделать это быстро?Pearson Correlation Zero Values ​​

Результат (образец):
(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...]

correlation1: (0.52543523179249552, 0.0), (0.52543905756911169, 0.0), (0.52544196572206603, 0.0), (0.52545010637443945, 0.0)...

ответ

0

Если вы читали documentation of the pearsonr function, вы видите, что второе слагаемое р-значение дает вероятность того, что корреляции Пирсона между набором данных равно 0.

Если я запускаю свой код на списках образца , я получаю только один 0 р-значение:

correlation1 = [(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 .

+0

спасибо. Затем, как я могу построить результат корреляции с данными строки? Например, я рисую данные строки с разбросом (speed1_list, speed2_list, marker = '.', Color = 'pink'). Затем я хочу добавить график корреляции на график данных строки. Вы можете мне помочь? Благодарю. @Math – serenade

+0

Я не понимаю, что вы хотите сделать. Корреляция между -1 и 1, в то время как ваш диапазон данных в сотнях, вы не увидите изменений корреляции на графике. Что вы можете сделать, это привязка к сопоставлению с индексом, если вы хотите показать некоторую конвергенцию, но на собственном графике. – Math

Смежные вопросы