兩組序列資料,求兩者的線性相關係數。
1:使用numpy
import randomimport numpy as np
a = [random.randint(0, 10) for t in range(20)]
b = [random.randint(0, 10) for t in range(20)]
# 先構造乙個矩陣
ab = np.array([a, b])
# 計算協方差矩陣
print(np.cov(ab))
print(np.corrcoef(ab))
2:使用pandas
import pandas as pd# 使用 pandas 計算協方差、相關係數
# 使用 dataframe 作為資料結構,為方便計算,我們會將 ab 矩陣轉置
dfab = pd.dataframe(ab.t, columns=['a', 'b'])
# a b 協方差
print(dfab.a.cov(dfab.b))
# a b 相關係數
print(dfab.a.corr(dfab.b))
3:使用原生函式
import randomimport math
a = [random.randint(0, 10) for t in range(20)]
b = [random.randint(0, 10) for t in range(20)]
#計算平均值
def mean(x):
return sum(x) / len(x)
# 計算每一項資料與均值的差
def de_mean(x):
x_bar = mean(x)
return [x_i - x_bar for x_i in x]
# 輔助計算函式 dot product 、sum_of_squares
def dot(v, w):
return sum(v_i * w_i for v_i, w_i in zip(v, w))
def sum_of_squares(v):
return dot(v, v)
# 方差
def variance(x):
n = len(x)
deviations = de_mean(x)
return sum_of_squares(deviations) / (n - 1)
# 標準差
def standard_deviation(x):
return math.sqrt(variance(x))
# 協方差
def covariance(x, y):
n = len(x)
return dot(de_mean(x), de_mean(y)) / (n -1)
# 相關係數
def correlation(x, y):
stdev_x = standard_deviation(x)
stdev_y = standard_deviation(y)
if stdev_x > 0 and stdev_y > 0:
return covariance(x, y) / stdev_x / stdev_y
else:
return 0
print(a)
print(b)
print(standard_deviation(a))
print(standard_deviation(b))
print(correlation(a,b))
4:使用r,spss,excel
python求相關係數 python 求相關係數
兩組序列資料,求兩者的線性相關係數。1 使用numpy import random import numpy as np a random.randint 0,10 for t in range 20 b random.randint 0,10 for t in range 20 先構造乙個矩陣 a...
Python計算相關係數
最近在看地理建模題目,其中提到了建立回歸模型後計算相關係數 當時有點疑問,這個相關係數是從原始資料算出,還是用回歸後的擬合資料計算。後來想了想應該是原始資料計算的,用回歸方程算出的x,y肯定在一條直線上,相關係數直接就是1了。雖然想法有些耿直,但是為了驗證一下,同時也順路寫寫 於是使用python計...
皮爾森相關係數 皮爾森相關係數的計算
在 變數關係大揭秘 一 我們提到了皮爾森相關係數r 先來兩個散點圖,左圖中x和y不相關,右圖中x和y高度正相關,差別在哪?讓我們在左右兩圖各畫乙個 田 字,田 字中心的座標是 x的平均值,y的平均值 比較左右兩圖,我們知道 當散點在a b c d均勻分布,x和y不相關 當a和c的點越多,並且b和d的...