7.8 回归中的相关度和R平方值应用

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

def computeCorrelation(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
    
def polyfit(x,y,degree):
    results = {}
    coeffs = np.polyfit(x,y,degree)
    results['polynomial'] = coeffs.tolist()
    
    p = np.poly1d(coeffs)
    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['determination'] = ssreg / sstot

    print "results:", results
    return results

    
testX = [1,3,8,7,9]
testY = [10,12,24,21,34]

print "r: ",computeCorrelation(testX, testY)
print "r^2:",str(computeCorrelation(testX,testY)**2)

print polyfit(testX,testY,1)["determination"]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值