Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中计算平方和?_Python_Numpy_Statistics_Regression_Data Science - Fatal编程技术网

如何在Python中计算平方和?

如何在Python中计算平方和?,python,numpy,statistics,regression,data-science,Python,Numpy,Statistics,Regression,Data Science,首先,公式是否总是正确的?即使是指数模型?如果是,我只是不明白我错在哪里 我有两个x和y值的数组,其中y依赖于x x=np.数组([1.5,2.1,2.4,2.7,3.2,3.4,3.6,3.7,4.0,4.5,5.1,5.6]) y=np.数组([0.6,1.2,1.3,1.4,1.45,1.5,1.6,1.8,1.9,1.95,2.1,2.2]) 我有一个函数,确定系数a和b,并返回一个线性回归方程(或者如果需要,只返回a和b) def线性(x,y,getAB=False): 平均值X=n

首先,公式是否总是正确的?即使是指数模型?如果是,我只是不明白我错在哪里

我有两个x和y值的数组,其中y依赖于x

x=np.数组([1.5,2.1,2.4,2.7,3.2,3.4,3.6,3.7,4.0,4.5,5.1,5.6])
y=np.数组([0.6,1.2,1.3,1.4,1.45,1.5,1.6,1.8,1.9,1.95,2.1,2.2])
我有一个函数,确定系数a和b,并返回一个线性回归方程(或者如果需要,只返回a和b)

def线性(x,y,getAB=False):
平均值X=np.平均值(X)
平均值Y=np.平均值(Y)
DISP_X=np.var(X)
显示Y=np.var(Y)
标准X=np.标准(X)
标准Y=np.标准(Y)
平均产量=np.平均值(x*y)
cov=平均产量-(平均产量X*平均产量Y)
b=cov/DISP_X
a=平均值Y-b*平均值X
如果getAB:
返回a,b
返回λX:a+b*X
我有一个函数,它决定系数a和b,并返回一个指数回归方程

def指数(x,y,getAB=False):
LOG\u Y\u数组=[math.LOG(value)表示Y中的值]
A、 B=线性(x,对数Y数组,getAB=True)
a=数学表达式(a)
b=数学表达式(b)
如果getAB:
返回a,b
返回λX:a*(b**X)
我根据指数模型创建了计算y值的数组

指数预测=指数(x,y) 指数预测(y)=[指数预测(x值的值)] 最后,这就是我计算TSS、ESS和RSS的方法

TSS=np.sum((y-np.average(y))**2)
ESS_Exp=np.sum((指数预测y-np.average(y))**2)
RSS_Exp=np.sum((y-指数预测)**2)
这是非常清楚的,除了这个

print(str(TSS)+“=”+str(ESS_Exp)+“+”+str(RSS_Exp))
为2.181666667=2.75523753042+0.432362713806


我不明白ESS怎么可能比TSS更重要。当你使用线性回归时,你缺少了一个为零的项,因为你没有,你必须加上它。在文斯评论的链接中,您可以看到TSS=ESS+RSS+2*sum((y-yhat)*(yhat-ybar))

您需要将该额外术语包括在内,以使其相加:

extra\u term=2*np.sum((y-指数预测y)*(指数预测y-平均值())
打印(str(TSS)+“=”+str(ESS_Exp)+“+”+str(RSS_Exp)+“+”+str(额外术语))

Wikipedia说TSS=ESS+RSS只有在特定的条件下@Vince W我想在这种情况下,这个等式应该有效。通过得到公式y=a*b^x两边的对数,这样的指数模型可以很容易地转换为简单的线性模型。维基百科说TSS=ESS+RSS对于简单线性回归是正确的。至少我是这么看的。不幸的是,我不知道如何帮助你。我使用
np.polyfit(x,y,1)
和np.polyfit(x,np.log(y),1)对你的拟合进行了双重检查,我得到了相同的线性情况和对数情况的答案(注意,对于你的对数情况,我得到了相同的
a,b
而不是相同的
a,b
)。如果TSS=ESS+RSS,那么看起来您计算的系数是正确的,这意味着您计算rest的方式一定有问题,这是正确的,谢谢。我没有计算线性模型的额外项,方程仍然有效。所以,我决定这不是真的需要。这是一个错误。这是指数模型所需要的。