所以,我有一组数据点可以进行线性回归,大多数大计算都可以顺利进行。
from __future__ import division
data = [[0.0,0.0], [1.0,2.0], [2.0,4.0]]
#regression model
n = float(len(data))
sumx = 0.0
sumy = 0.0
sumxsquared = 0.0
sumxy = 0.0
rcoeff = 0.0
m = 0.0
print (n)
i=0
while (i < n):
sumx += data[i][0]
sumxsquared += (data[i][0])**2.0
sumxy += data[i][0]*data[i][1]
sumy += data[i][1]
i += 1
print ("total x: " + str(sumx))
print ("total y: " + str(sumy))
print ("total xy: " + str(sumxy))
print ("total x squared: " + str(sumxsquared))
但是,在我添加以下代码后,我的&#39; m&#39;读零
m = ((sumy*sumxsquared-sumx*sumxy)/((n*sumxsquared)-sumx**2.0))
print ("m:" + str(m))
我正在努力寻找原因,我可以请一些帮助吗?
答案 0 :(得分:0)
表达式的分子
((sumy*sumxsquared-sumx*sumxy)/((n*sumxsquared)-sumx**2.0))
是6*5 - 3*10
,即30 - 30
或零,所以当然整个分数的评估结果为零。
请注意,您的数据由直线((0,0)
,(1,2)
和(2,4)
)中的三个点组成,此外该行还有原点,所以很多基于这些点的统计数据将为零。
答案 1 :(得分:0)
您将0除以6,即0:
a=(sumy*sumxsquared)
b=(sumx*sumxy)
c=(n*sumxsquared)
d=(sumx**2.0)
print(a)
print(b)
print(c)
print(d)
m = (a-b)/(c-d)
print ("m:" + str(m))
输出:
30.0
30.0
15.0
9.0
m:0.0