我正在通过此video了解有关Anscombe的四重奏。
我正在尝试用Python绘制Anscombe的四重奏。
matplotlib doc提供了执行此操作的方法。
def fit(x):
return 3 + 0.5 * x
此函数名为fit,是概率论中的真正拟合方法吗?
答案 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
中看到的完全相同。
如您所见,所有拟合都产生几乎完全相同的函数,但是您可以从它们的图中看出它们是完全不同的,尽管拟合本身并不好开始-这是对我们中普遍存在的盲目的全局拟合的警告年龄。最好是直观地了解有关分布的一些信息,而不是只说一句就好-哦,看,我所有的布景都是一样的。