python 求相關係數

2022-08-15 09:30:11 字數 1869 閱讀 1235

兩組序列資料,求兩者的線性相關係數。

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)]

# 先構造乙個矩陣

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 random

import 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的...