python求解系数是啥

Python017

python求解系数是啥,第1张

1. person correlation coefficient(皮尔森相关性系数)

皮尔逊相关系数通常用r或ρ表示,度量两变量X和Y之间相互关系(线性相关)

(1)公式

皮尔森相关性系数的值等于它们之间的协方差cov(X,Y)除以它们各自标准差的乘积(σX, σY)。

(2)数据要求

a.正态分布

它是协方差与标准差的比值,并且在求皮尔森相关性系数以后,通常还会用t检验之类的方法来进行皮尔森相关性系数检验,而t检验是基于数据呈正态分布的假设的。

b.实验数据之间的差距不能太大

比如:研究人跑步的速度与心脏跳动的相关性,如果人突发心脏病,心跳为0(或者过快与过慢),那这时候我们会测到一个偏离正常值的心跳,如果我们把这个值也放进去进行相关性分析,它的存在会大大干扰计算的结果的。

(3)实例代码

import pandas as pd

import numpy as np

#原始数据

X1=pd.Series([1, 2, 3, 4, 5, 6])

Y1=pd.Series([0.3, 0.9, 2.7, 2, 3.5, 5])

X1.mean() #平均值# 3.5

Y1.mean() #2.4

X1.var() #方差#3.5

Y1.var() #2.9760000000000004

X1.std() #标准差不能为0# 1.8708286933869707

Y1.std() #标准差不能为0#1.725108692227826

X1.cov(Y1) #协方差#3.0600000000000005

X1.corr(Y1,method="pearson") #皮尔森相关性系数 #0.948136664010285

X1.cov(Y1)/(X1.std()*Y1.std()) #皮尔森相关性系数 # 0.948136664010285

2. spearman correlation coefficient(斯皮尔曼相关性系数)

斯皮尔曼相关性系数,通常也叫斯皮尔曼秩相关系数。“秩”,可以理解成就是一种顺序或者排序,那么它就是根据原始数据的排序位置进行求解

(1)公式

首先对两个变量(X, Y)的数据进行排序,然后记下排序以后的位置(X’, Y’),(X’, Y’)的值就称为秩次,秩次的差值就是上面公式中的di,n就是变量中数据的个数,最后带入公式就可求解结果。

(2)数据要求

因为是定序,所以我们不用管X和Y这两个变量具体的值到底差了多少,只需要算一下它们每个值所处的排列位置的差值,就可以求出相关性系数了

(3)实例代码

import pandas as pd

import numpy as np

#原始数据

X1=pd.Series([1, 2, 3, 4, 5, 6])

Y1=pd.Series([0.3, 0.9, 2.7, 2, 3.5, 5])

#处理数据删除Nan

x1=X1.dropna()

y1=Y1.dropna()

n=x1.count()

x1.index=np.arange(n)

y1.index=np.arange(n)

#分部计算

d=(x1.sort_values().index-y1.sort_values().index)**2

dd=d.to_series().sum()

p=1-n*dd/(n*(n**2-1))

#s.corr()函数计算

r=x1.corr(y1,method='spearman')

print(r,p) #0.942857142857143 0.9428571428571428

3. kendall correlation coefficient(肯德尔相关性系数)

肯德尔相关性系数,又称肯德尔秩相关系数,它也是一种秩相关系数,不过它所计算的对象是分类变量。

分类变量可以理解成有类别的变量,可以分为:

(1) 无序的,比如性别(男、女)、血型(A、B、O、AB);

(2) 有序的,比如肥胖等级(重度肥胖,中度肥胖、轻度肥胖、不肥胖)。

通常需要求相关性系数的都是有序分类变量。

(1)公式

R=(P-(n*(n-1)/2-P))/(n*(n-1)/2)=(4P/(n*(n-1)))-1

注:设有n个统计对象,每个对象有两个属性。将所有统计对象按属性1取值排列,不失一般性,设此时属性2取值的排列是乱序的。设P为两个属性值排列大小关系一致的统计对象对数

(2)数据要求

类别数据或者可以分类的数据

(3)实例代码

import pandas as pd

import numpy as np

#原始数据

x= pd.Series([3,1,2,2,1,3])

y= pd.Series([1,2,3,2,1,1])

r = x.corr(y,method="kendall") #-0.2611165

基于最小二乘法求解AR模型系数

设序列的值分别为{t=0,1,...N},设

AR(p)模型可以表示为:

由最小二乘法原理计算,AR模型系数的估计为:

最小二乘法估计系数的python 代码实现如下:

#最小二乘法估计

import numpy as np

def ar_least_square(sample,p):  

    matrix_x=np.zeros((sample.size-p,p))  

    matrix_x=np.matrix(matrix_x)  

    array=sample.reshape(sample.size)  

    j=0

    for i in range(0,sample.size-p):

        matrix_x[i,0:p]=array[j:j+p]  

        j=j+1  

    matrix_y=np.array(array[p:sample.size])

    matrix_y=matrix_y.reshape(sample.size-p,1)

    matrix_y=np.matrix(matrix_y)

    #cofe为AR系数 

    cofe=np.dot(np.dot((np.dot(matrix_x.T,matrix_x)).I,matrix_x.T),matrix_y)

    return cofe

numpy计算平均数 标准差 相关系数等基本知识

NumPy 是python 语言的一个第三方库,其支持大量高维度数组与矩阵运算。此外,NumPy 也针对数组运算提供大量的数学函数。

#导入Numpy库,并命名为np

import numpy as np

#创建一维数组

a = np.array([1, 2, 3])

# NumPy可以很方便地创建连续数组,比如我使用arange或linspace函数进行创建:

b = np.arange(1,5,1) // 返回一个有终点和起点、固定步长的排列,如起点是1,终点是4,步长为1,即【1,2,3,4】,

c = np.linspace(1,9,5) 返回一个有终点和起点、元素个数的的排列,如起点是1,终点是9,元素个数为5,即【1,3,5,7,9】

#通过NumPy可以自由地创建等差数组,同时也可以进行加、减、乘、除、求n次方和取余数。

求和:np.sum(a)

求取平均值:np.mean(a)

求取中位数:np.median(a)

求取加权平均数:np.average(a)

求取方差:var() np.var(a)

求取最小值:np.amin(a)

求取最大值:np.amax(a)

将两个数相加:np.add(x1, x2)

将两个数相减:np.subtract(x1, x2)

将两个数相乘:np.multiply(x1, x2)

将两个数相除:np.divide(x1, x2)

立方:np.power(x1, x2)

除余:np.remainder(x1, x2)

相关系数计算:np.corrcoef(a1, a2) (a1、a2都是矩阵)