回归中的相关度和决定系数

本文介绍了皮尔逊相关系数和R平方值的概念。皮尔逊相关系数衡量两个值的线性相关强度,取值范围[-1,1]。R平方表示因变量的变异能被自变量解释的比例,其局限性在于会随着自变量增加而增大。文中提供了Python代码实现相关系数和R平方的计算,并展示了计算示例。" 113955560,10539773,数据库索引原理与优化,"['数据库理论', '数据结构', '数据库优化', '索引技术']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

1)衡量两个值线性相关强度的量;

2)取值范围:[-1,1]

正向相关:>0,负向相关:<0,无相关性:=0

3)定义


2.R平方值

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

2)描述:如R平方为0.8,则表示回归关系可以解释因变量80%的变异;即如果自变量不变,则因变量的变异程度会减少80%

3)简单线性回归:R^2=r*r

多元线性回归:



3.R平方局限性

R平方随着自变量的增大会变大,R平方和样本量是有关系的。所以,需要对R平方进行修正,修正方法为:


4.代码实现相关系数和R平方的计算

1)代码

# -*- coding: utf-8 -*-
import numpy as np
from astropy.units import Ybarn
import math


#根据相关系数计算公式给出实现过程
def computerCorrelation(X,Y):
    xBar = np.mean(X)
    yBar = np.mean(Y)
    SSR = 0
    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


#计算R平方
#degree为最高次的数值
def polyfit(X,Y,degree):
    results = {}
    #调用函数实现回归中参数计算
    coeffs = np.polyfit(X,Y,degree)
    #将结果转化为list
    results["polynomial"] = coeffs.tolist()
    #传入参数给出预测方程
    p = np.poly1d(coeffs)
    #给出y的预测值
    yhat = p(X)
    ybar = np.sum(Y)/len(Y)
    ssreg = np.sum((yhat-ybar)**2)
    sstot = np.sum((Y-ybar)**2)
    results["determirnation"] = ssreg/sstot
    return results
    
    
testX = [1,3,8,7,9]
testY = [10,12,24,21,34]
print("r:",computerCorrelation(testX,testY))
#线性相关时的特殊情况
print("r平方:",computerCorrelation(testX,testY)**2)
print("r平方",polyfit(testX,testY,1)["determirnation"])

2)结果

r: 0.940310076545
r平方: 0.884183040052

r平方 0.884183040052

3)结果说明

在一元线性相关的情况下:R^2=r*r

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值