2013-04-17 7 views
9

लौट रहा है मैं दो फ्लोट सरणी के लिए पियरसन के सहसंबंध की गणना करने के लिए पाइथन पुस्तकालय का उपयोग कर रहा हूं। गुणांक के लिए लौटा मूल्य हमेशा 1.0 होता है, भले ही सरणी अलग हों। उदाहरण के लिए:Scipy: पियरसन का सहसंबंध हमेशा 1

r_row, p_value = scipy.stats.pearsonr(array1, array2) 

r_row का मूल्य हमेशा 1.0 है:

[-0.65499887 2.34644428] 
[-1.46049758 3.86537321] 

मैं इस तरह से नियमित बोल रहा हूँ। मैं क्या गलत कर रहा हूं?

उत्तर

16

Pearson's correlation coefficient कितनी अच्छी तरह अपने डेटा एक रेखीय प्रतिगमन द्वारा लगाया जा होगा का एक उपाय है। यदि आप इसे केवल दो बिंदुओं के साथ प्रदान करते हैं, तो दोनों बिंदुओं के माध्यम से बिल्कुल एक रेखा गुजरती है, इसलिए आपका डेटा पूरी तरह से एक रेखा फिट बैठता है, इसलिए सहसंबंध गुणांक बिल्कुल है 1.

5

मुझे लगता है कि पियर्सन सहसंबंध गुणांक हमेशा रिटर्न 1.0 या -1.0 यदि प्रत्येक सरणी सिर्फ दो तत्व है, जब से तुम हमेशा लंबाई 3 की सरणियों के साथ यह दो points.Try के माध्यम से एक आदर्श सीधी रेखा खींचना सकते हैं और यह काम करेगा:

import scipy 
from scipy.stats import pearsonr 

x = scipy.array([-0.65499887, 2.34644428, 3.0]) 
y = scipy.array([-1.46049758, 3.86537321, 21.0]) 

r_row, p_value = pearsonr(x, y) 

परिणाम:

>>> r_row 
0.79617014831975552 
>>> p_value 
0.41371200873701036 
+0

यह लंबाई 2 के साथ सरणी के लिए क्यों काम नहीं करता है ? – user2291379

+0

यह लंबाई 2 के साथ सरणी के साथ काम करता है। –

संबंधित मुद्दे