是“3 + 0.5 * x”概率论中的真实拟合方法

is "3 + 0.5 * x" a real fit approach in probability theory

我正在通过这个 video 了解 Anscombe 的四重奏。

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

matplotlib doc 提供了一种方法。

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

这个叫fit的函数,是概率论中真正的拟合方法吗?

四重奏的要点是显示产生相同统计数据的非常不同的分布,因此是最佳线性拟合。要验证这一点:

>>> 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

如您所见,所有拟合产生几乎完全相同的函数,但您可以从它们的图中看出它们是完全不同的,尽管拟合本身从一开始就很糟糕——这是对普遍存在的盲目全局拟合的警告在我们这个时代。最好直观地理解有关分布的一些东西,而不是仅仅拟合和说 - 哦,看,我所有的集合都是一样的。