2015-11-30 7 views
0

Я могу рассчитать корреляции Пирсона между двумя списка:печать корреляции Пирсона остаточные значения

import scipy 
from scipy import stats 
from scipy.stats import pearsonr 
List1 = [1,2,3,4,5] 
List2 = [2,3,4,5,6] 
pearson = scipy.stats.pearsonr(List1,List2) 
print "pearson correlation: " + str(pearson) 

Я хотел бы список наблюдаемых - ожидаемых значений list1. Кто-нибудь знает, как расширить этот код, чтобы распечатать ожидаемые значения, пожалуйста?

Учитывая инструкцию для этого теста: http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.stats.pearsonr.html Я не уверен, что я могу получить эти значения с помощью этого метода, или если что-то еще больше подходит?

Edit, теперь я могу вычислить модель линейной регрессии:

import sys 
import scipy 
from scipy import stats 

List1 = [1,2,3,4,5] 
List2 = [1,3,5,6,7] 

slope, intercept, r_value, p_value, std_err = stats.linregress(List1,List2) 

Добавлено примечание:

Я предположил, что когда-то я приспособил модель, как любезно предложил, что я хотел бы выяснить, как, чтобы соответствовать остатки с использованием пакета linregress.

Однако, когда я называю:

>>> dir(stats.linregress) 
['__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__doc__', '__format__', '__get__', '__getattribute__', '__globals__', '__hash__', '__init__', '__module__', '__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'func_closure', 'func_code', 'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name'] 

Я вижу, что нет ничего, что напоминало бы .resid/.residuals etc.Could кто-то мне точку в правильном направлении к следующему шагу? Цель состоит в том, чтобы вычислить список наблюдаемых - ожидаемые значения для list1 (см выше?)

Исправление:

import scipy 
from scipy import stats 
x = [28,26,44,40,10,7,27,25,26,10] 
y = [0.055,0.074,0.049,0.067,0.037,0.036,0.044,0.041,0.071,0.03] 
print scipy.stats.linregress(x,y) 

дает мне это:

(0.00075454346398073121, 0.032064593825268217, 0.59378410770471368, 0.07031502216706445, 0.00036149633561360087) 

, который я предполагаю, что это остатки , Большое спасибо.

******* ****** КОРРЕКТИРОВКА

0,00075454346398073121 является наклон (м), а 0,032064593825268217 постоянна (с).

To obtain the raw residuals for the first two items in lists x and y (see above) respectively, use y=mx+c: 

list1 = [28,26] 
X1 observed = 28; X1 predicted = 0.000754*28 + 0.03206 = 0.0531 
X1 residual = 28 - 0.0531 = 27.94 

X2 observed = 26; X2 predicted = 0.000764*26+0.03206 = 0.051664 
X2 residual = 26 - 0.051664 = 25.94 



list2 [0.055,0.074] 
Y1 observed = 0.055; Y1 predicted = 0.000764*0.055+0.03206 = 0.032 
Y1 residual = 0.055 - 0.032 = 0.022 

Y2 observed = 0.074; Y2 predicted = 0.000764*0.074+0.03206 = 0.032 
Y2 residual = 0.074 - 0.032 = 0.041. 

Большое спасибо.

+0

Это не остаточный, это кортеж с (наклон, перехват, r-значение, p-значение, stderr). Чтобы получить остатки, вам нужно применить модель y = mx + b, где m - наклон, а b - перехват и вычесть его из «сырых» точек данных. – Benjamin

+0

большое спасибо. Я добавил исправление и пример, чтобы убедиться, что я правильно понял. – Mea

+0

Все еще не совсем. Вы должны проконсультироваться с хорошим текстом статистики или веб-сайтом для базового объяснения линейной регрессии. Инструменты не помогут, если вы не поймете, что означают результаты и как их использовать. – Benjamin

ответ

0

Он возвращает кортеж, который вы можете распаковывать:

corcoef, pval = scipy.stats.pearsonr(List1,List2) 

Что вы после является линейной регрессии: http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.stats.linregress.html#scipy.stats.linregress

Вы можете использовать модель для расчета остатков.

+0

Я думаю, что я исправил это, спасибо, ответ в случае, если другие заинтересованы, находится в приведенном выше правиле. – Mea