如何确定哪条回归曲线更合适?蟒蛇

时间:2018-06-06 16:25:41

标签: python python-3.x numpy scipy regression

嗯,社区:

最近我问过如何进行指数回归(Exponential regression function Python),认为对于该数据集,最优回归是双曲线。

x_data = np.arange(0, 51) 
y_data = np.array([0.001, 0.199, 0.394, 0.556, 0.797, 0.891, 1.171, 1.128, 1.437, 
          1.525, 1.720, 1.703, 1.895, 2.003, 2.108, 2.408, 2.424,2.537, 
          2.647, 2.740, 2.957, 2.58, 3.156, 3.051, 3.043, 3.353, 3.400, 
          3.606, 3.659, 3.671, 3.750, 3.827, 3.902, 3.976, 4.048, 4.018, 
          4.286, 4.353, 4.418, 4.382, 4.444, 4.485, 4.465, 4.600, 4.681, 
          4.737, 4.792, 4.845, 4.909, 4.919, 5.100])

现在,我怀疑:

Exponential

Hyperbolic

第一个是指数拟合。第二个是双曲线。我不知道哪个更好......如何确定?我应该遵循哪些标准?有一些python函数吗?

提前致谢!

3 个答案:

答案 0 :(得分:2)

一个常见的拟合统计量是R平方(R2),可以计算为" R2 = 1.0 - (absolute_error_variance / dependent_data_variance)"它告诉您模型解释了依赖数据方差的哪一部分。例如,如果R平方值为0.95,那么您的模型将解释95%的相关数据方差。由于您正在使用numpy,因此R平方值可以简单地计算为" R2 = 1.0 - (abs_err.var()/ dep_data.var())"因为numpy数组有一个var()方法来计算方差。将数据拟合到Michaelis-Menten方程时,#y; ax =(b + x)"参数值为a = 1.0232217656373191E + 01和b = 5.2016057362771100E + 01我计算的R平方值为0.9967,这意味着" y"中的方差为99.67%。数据由此模型解释。但是,没有银弹,验证其他合适的统计数据并视觉检查模型总是好的。这是我用的例子的情节: model.png

答案 1 :(得分:1)

那么,你应该计算一个误差函数来测量你的拟合实际有多好。您可以使用许多不同的错误函数,但是一开始,均方误差应该有效(如果您对更多指标感兴趣,请查看http://scikit-learn.org/stable/modules/model_evaluation.html)。

一旦确定了回归问题的系数,就可以手动实现均方误差:

from sklearn.metrics import mean_squared_error
f = lambda x: a * np.exp(b * x) + c 
mse = mean_squared_error(y_data, f(x_data))

答案 2 :(得分:1)

你可以在函数和拟合线之间取两个范数。 Python具有函数np.linalg.norm R平方值用于线性回归。