回归分析中的相关度(Corr)和R^2

一、.皮尔逊相关系数(Pearson Correlation Coefficient)

1.可以用来衡量两个数值之间的线性相关程度

2.对应的取值范围为[-1,1],即存在正相关,负相关和不相关

3.计算公式:

\rho =Cor(X,Y)=\frac{Cov(X,Y)}{\sqrt{Var(X)Var(Y)}}

r_{xy}=\frac{\sum(x-\bar{x})(y-\bar{y})) }{\sqrt{\sum (x-\bar{x})^2\sum (y-\bar{y})^2}}

二、R^2

1.定义:决定系数,反应因变量的全部变异能通过回归关系被自变量解释的比例

2.描述:如R^2=0.8,则表示回归关系可以解释为因变量80%的变异。即,如果可以控制自变量保持不变,则因变量的变异程度会减少80%

3.简单线性回归的计算方式:R^2=r*r

4.多元线性回归的计算方式:R^{2}=\frac{SSR}{SST}=\frac{\sum (\hat{y_{i}}-\bar{y})^2}{\sum (y_{i}-\bar{y})^2}

SST=\sum_{i}^{}(y_{i}-\bar{y})^2

SSR=\sum_{i}^{}(\hat{y_{i}}-\bar{y})^2

SSE=\sum_{i}^{}(y_{i}-\hat{y_{i}})^2

5.R^2也具有一定的局限性,R^2会随着自变量的增大增大,R^2和样本量具有一定的关系。因此,为了改进R^2的局限性,我们要对R^2进行修正。修正的方法为:

R^{2}_{adjust}=1-\frac{(1-R^2)(N-1)}{N-P-1}

其中P为预测值的数量

N为总实例的数量。

3.应用实例代码即结果

import numpy as np
from astropy.units import Ybarn
import math

def computerCorrelation(X, Y):
    XBar = np.mean(X)#X的均值
    YBar = np.mean(Y)#Y的均值
    SSR = 0#初始化SSR
    varX = 0
    varY = 0
    for i in range (0, len(X)):
        diffXXBar = X[i] - XBar
        diffYYBar = Y[i] - YBar
        SSR += (diffXXBar  * diffYYBar )
        varX += diffXXBar**2
        varY += diffYYBar**2
        SST = math.sqrt(varX *varY )
    return SSR/SST
def polyfit (x, y,degree):#degree代表次数
    results = {}#把结果存储在results中
    coffs = np.polyfit(x, y, degree)#返回相关系数估计
    results['polynomfot'] = coffs .tolist()
    p = np.poly1d(coffs)#返回预测值yhat
    yhat = p(x)
    ybar = np.sum(y)/len(y)
    ssreg = np.sum((yhat-ybar)**2)
    print('ssreg:', str(ssreg))
    sstot = np.sum((y-ybar)**2)
    print('sstot:', str(sstot))
    results['determinotion'] = ssreg/sstot
    print('results:', results)
    return results

textX = [1, 3, 5, 7, 9]
textY = [10, 13, 15, 20, 35]
print('r:', computerCorrelation(textX, textY))
print('r^2:', str(computerCorrelation(textX, textY)**2))
print(polyfit(textX, textY, 1), 'determinotion')

运行结果:

r: 0.9136680531834395
r^2: 0.8347893114080164
ssreg: 324.9000000000002
sstot: 389.20000000000005
results: {'polynomfot': [2.8500000000000005, 4.350000000000008], 'determinotion': 0.8347893114080168}
{'polynomfot': [2.8500000000000005, 4.350000000000008], 'determinotion': 0.8347893114080168} determinotion

### 多元线性回归中的相关系数 在多元线性回归分析中,相关系数用于衡量多个独立变量之间的线性关联程度。具体来说,当探讨一个因变量 \( Y \) 若干个自变量 \( X_1, X_2,...,X_n \) 的关系时,不仅关注单个自变量与因变量间的联系强度,还需考察各预测因子间是否存在共线性问题[^1]。 对于任意一对连续型随机变量 \( (X_i,X_j) \),皮尔逊积矩相关系数定义如下: \[ r_{ij}=\frac{\sum(X_i-\bar{X}_i)(X_j-\bar{X}_j)}{\sqrt{\sum{(X_i-\bar{X}_i)^2}\sum{(X_j-\bar{X}_j)^2}}} \] 其中 \( \bar{X}_i,\bar{X}_j \) 分别代表样本均值;分子部分表示协方差,分母则是各自标准差乘积的结果。该统计量取值范围介于 -1 至 +1 之间,绝对值越大表明两者的线性依赖越强,正值意味着正向变动趋势一致,负值则暗示相反变化方向。 值得注意的是,在构建多因素模型之前应当仔细审查各个解释项的相关结构,因为高度相关的输入可能会引发多重共线性的困扰,从而影响参数估计的有效性稳定性[^3]。 ```python import numpy as np from scipy.stats import pearsonr def calculate_correlation(x, y): corr, _ = pearsonr(x, y) return corr # Example usage with two variables x and y x = np.array([1, 2, 3, 4, 5]) y = np.array([7, 8, 9, 10, 11]) correlation_coefficient = calculate_correlation(x, y) print(f"The correlation coefficient between x and y is {correlation_coefficient}") ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值