是“ 3 + 0.5 * x”在概率论中的一种实际拟合方法

时间:2019-04-28 04:32:54

标签: probability

我正在通过此video了解有关Anscombe的四重奏。

我正在尝试用Python绘制Anscombe的四重奏。

matplotlib doc提供了执行此操作的方法。

def fit(x):
    return 3 + 0.5 * x

此函数名为fit,是概率论中的真正拟合方法吗?

1 个答案:

答案 0 :(得分:1)

四重奏的目的是要显示出非常不同的分布,从而产生相同的统计量,从而获得最佳的线性拟合。要验证这一点:

>>> import pandas as pd
>>> from scipy.optimize import curve_fit
>>> def tofit(x,a,b): return a*x+b
>>> df = pd.read_csv('bla.dat',sep=' ')
>>> df
      x0     y0    x1    y1    x2     y2    x3     y3
0   10.0   8.04  10.0  9.14  10.0   7.46   8.0   6.58
1    8.0   6.95   8.0  8.14   8.0   6.77   8.0   5.76
2   13.0   7.58  13.0  8.74  13.0  12.74   8.0   7.71
3    9.0   8.81   9.0  8.77   9.0   7.11   8.0   8.84
4   11.0   8.33  11.0  9.26  11.0   7.81   8.0   8.47
5   14.0   9.96  14.0  8.10  14.0   8.84   8.0   7.04
6    6.0   7.24   6.0  6.13   6.0   6.08   8.0   5.25
7    4.0   4.26   4.0  3.10   4.0   5.39  19.0  12.50
8   12.0  10.84  12.0  9.13  12.0   8.15   8.0   5.56
9    7.0   4.82   7.0  7.26   7.0   6.42   8.0   7.91
10   5.0   5.68   5.0  4.74   5.0   5.73   8.0   6.89
>>> for i in range(4): curve_fit(tofit,df['x%d'%i],df['y%d'%i])[0]
... 
array([0.50009091, 3.00009091])
array([0.5       , 3.00090909])
array([0.49972727, 3.00245453])
array([0.49990909, 3.00172727])

四个不同的数组是为每个数据集拟合的斜率和截距。所有这些几乎都与您在教程0.5x+3中看到的完全相同。

如您所见,所有拟合都产生几乎完全相同的函数,但是您可以从它们的图中看出它们是完全不同的,尽管拟合本身并不好开始-这是对我们中普遍存在的盲目的全局拟合的警告年龄。最好是直观地了解有关分布的一些信息,而不是只说一句就好-哦,看,我所有的布景都是一样的。