python:二次相关

python:二次相关,python,numpy,scipy,Python,Numpy,Scipy,我的问题如下。假设我有这两个数组: import numpy as np x1 = np.array([1,2,3,4,5,6,5,5,4,3,2,1]) y1 = np.array([1,2,3,4,5,6,7,8,9,10,11,12]) 有没有办法计算它们之间的某种“四次相关系数”(二次回归:y=a+Bx+Cx2)?像这样的事情已经完成了: 此外,如果可能,是否也可以计算与其他多项式/指数函数的相关系数 致以最良好的祝愿 因此您有一些数据(我将更改这些值,因为您有重复的X值和不同的Y值)

我的问题如下。假设我有这两个数组:

import numpy as np
x1 = np.array([1,2,3,4,5,6,5,5,4,3,2,1])
y1 = np.array([1,2,3,4,5,6,7,8,9,10,11,12])
有没有办法计算它们之间的某种“四次相关系数”(二次回归:y=a+Bx+Cx2)?像这样的事情已经完成了:

此外,如果可能,是否也可以计算与其他多项式/指数函数的相关系数

致以最良好的祝愿

因此您有一些数据(我将更改这些值,因为您有重复的X值和不同的Y值):

您可以找到不同的多项式拟合:

您可以通过使用以下公式计算得到的多项式来检查每个多项式的性能:

这些看起来像这样:

您可以从数值上检查每种方法的适用性,例如计算:

现在,除此之外,你可以看看相关性。实际上有几种不同的方法。NumPy在以下内容中实现:

该系数用于测量线性相关性,因此无法很好地处理非线性关系。然而,非线性相关性通常是一个更为复杂的主题(和)。您可以查看一些其他相关系数或研究其他技术,但请注意,这只会告诉您是否存在某些相关性,而不会告诉您是否能够利用相关性构建模型。

因此您有一些数据(我将更改这些值,因为您使用不同的Y重复了X值):

您可以找到不同的多项式拟合:

您可以通过使用以下公式计算得到的多项式来检查每个多项式的性能:

这些看起来像这样:

您可以从数值上检查每种方法的适用性,例如计算:

现在,除此之外,您还可以查看相关性。实际上有几种.NumPy在中实现:


这个系数衡量线性相关性,因此它不能很好地处理非线性关系。然而,非线性相关性通常是一个更复杂的主题(和)。您可以查看一些其他相关系数或研究其他技术,但请注意,这只会告诉您是否存在某些相关性,而不会告诉您是否能够利用相关性构建模型。

没有“二次相关系数”这类东西,这只是二次回归。例如,在NumPy中,有最小二乘多项式回归,SciPy有一般函数拟合。相关系数可以用计算,但必须有一种方法来计算系数数据与线性、四次函数等函数的拟合程度?相关系数m测量
x
是否随着
y
的变化而变化。每个特定方法的优点可以用不同的方式来衡量,例如,如果是函数,则为均方误差;如果是统计模型,则为似然性,等等。当然,np.corrcoef会导致低系数,因为它是linear@jdehesa好吧,如果我没弄错的话,我会的做一个多边形或曲线,从数据中得到一个函数,然后在这个函数和一个四次函数之间做一个均方误差,比如说,这是什么样子的?没有所谓的“二次相关系数”,这只是二次回归。例如,在NumPy中,有最小二乘多项式回归,SciPy有一般函数拟合。相关系数可以用计算,但必须有一种方法来计算系数数据与线性、四次函数等函数的拟合程度?相关系数m测量
x
是否随着
y
的变化而变化。每个特定方法的优点可以用不同的方式来衡量,例如,如果是函数,则为均方误差;如果是统计模型,则为似然性,等等。当然,np.corrcoef会导致低系数,因为它是linear@jdehesa好吧,如果我没弄错的话,我会的用多边形或曲线拟合从数据中得到一个函数,然后在这个函数和一个四次函数之间做一个均方误差,例如?这看起来像什么?高斯拟合也可以这样做吗?我是说均方误差?和函数拟合一样(最小化MSE),您有概率分布的方法。例如,在贝叶斯统计中,您有,并且,每个方法都用于根据某种统计“质量度量”拟合模型。对于高斯拟合也可以这样做吗?我指的是均方误差?与函数拟合相同(最小化MSE),您有概率分布的方法。例如,在贝叶斯统计中,您有,并且,每个方法都用于根据某种统计“质量度量”来拟合模型。
import numpy as np
x1 = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
y1 = np.array([1, 3, 4, 6, 7, 4, 6, 5, 2])
fit1 = np.polyfit(x1, y1, 1)  # linear
fit2 = np.polyfit(x1, y1, 2)  # quadratic
fit3 = np.polyfit(x1, y1, 3)  # cubic
v1 = np.polyval(fit1, x1)
v2 = np.polyval(fit2, x1)
v3 = np.polyval(fit3, x1)
mse1 = np.mean(np.square(y1 - v1))  # 3.240
mse2 = np.mean(np.square(y1 - v2))  # 0.734
mse3 = np.mean(np.square(y1 - v3))  # 0.727
np.corrcoef(x1, y1)
# [[ 1.        ,  0.27578314],
#  [ 0.27578314,  1.        ]]