python代码实现:
import numpy as np
import math
def Sxy(x,y):
sum = 0
sumx = 0
sumy = 0
for i in range(len(x)):
sum+=x[i]*y[i]
sumx+=x[i]
sumy+=y[i]
return sum-sumx*sumy/len(x)
def a(x,y,b):
sumy = 0
sumx = 0
for i in range(len(x)):
sumy += y[i]
sumx += x[i]
sumy/=len(x)
sumx/=len(x)
return sumy - sumx * b
x = [100,110,120,130,140,150,160,170,180,190]
y = [45,51,54,61,66,70,74,78,85,89]
sxy = Sxy(x,y)
print('sxy:',sxy)
sxx = Sxy(x,x)
print('sxx:',sxx)
b = sxy/sxx
print('b:',b)
a = a(x,y,b)
print('a:',a)
print('所有一元回归函数为Y=',a,'x+',b)
检验回归效果显著性
1)设
2)判断
import numpy as np
import math
def Sxy(x,y):
sum = 0
sumx = 0
sumy = 0
for i in range(len(x)):
sum+=x[i]*y[i]
sumx+=x[i]
sumy+=y[i]
return sum-sumx*sumy/len(x)
def a(x,y,b):
sumy = 0
sumx = 0
for i in range(len(x)):
sumy += y[i]
sumx += x[i]
sumy/=len(x)
sumx/=len(x)
return sumy - sumx * b
x = [100,110,120,130,140,150,160,170,180,190]
y = [45,51,54,61,66,70,74,78,85,89]
sxy = Sxy(x,y)
print('sxy:',sxy)
sxx = Sxy(x,x)
print('sxx:',sxx)
b = sxy/sxx
print('b:',b)
a = a(x,y,b)
print('a:',a)
print('所有一元回归函数为Y=',a,'x+',b)
syy = Sxy(y,y)
print('syy:',syy)
sigma2 = (syy-b*sxy)/(len(x)-2)
print('sigma2:',sigma2)
print(abs(b)/math.sqrt(sigma2)*math.sqrt(sxx))
求系数b的置信区间
置信区间为
来源:CSDN
作者:Philtell
链接:https://blog.csdn.net/CCCrunner/article/details/103820808