安斯科姆四重奏
根据 Wikipedia 中给出的定义, Anscombe 的四重奏包含四个数据集,它们具有几乎相同的简单统计属性,但在绘制图表时却显得非常不同。每个数据集由十一个 (x,y) 点组成。它们由统计学家 Francis Anscombe 于 1973 年构建,以证明在分析数据之前绘制数据的重要性以及异常值对统计特性的影响。
简单理解:
有一次,著名的统计学家 Francis John “Frank” Anscombe 在他的梦中发现了 4 组 11 个数据点,并请求理事会作为他绘制这些点的最后愿望。下面给出了这 4 组 11 个数据点。
之后,理事会仅使用描述性统计数据对其进行了分析,并找到了 x 和 y 之间的平均值、标准差和相关性。
请在此处下载 csv 文件。
代码:查找均值、标准差以及 x 和 y 之间相关性的Python程序
# Import the required libraries
import pandas as pd
import statistics
from scipy.stats import pearsonr
# Import the csv file
df = pd.read_csv("anscombe.csv")
# Convert pandas dataframe into pandas series
list1 = df['x1']
list2 = df['y1']
# Calculating mean for x1
print('%.1f' % statistics.mean(list1))
# Calculating standard deviation for x1
print('%.2f' % statistics.stdev(list1))
# Calculating mean for y1
print('%.1f' % statistics.mean(list2))
# Calculating standard deviation for y1
print('%.2f' % statistics.stdev(list2))
# Calculating pearson correlation
corr, _ = pearsonr(list1, list2)
print('%.3f' % corr)
# Similarly calculate for the other 3 samples
# This code is contributed by Amiya Rout
输出:
9.0
3.32
7.5
2.03
0.816
因此,让我以表格的方式向您展示结果,以便更好地理解。
代码:绘制散点图的Python程序
# Import the required libraries
from matplotlib import pyplot as plt
import pandas as pd
# Import the csv file
df = pd.read_csv("anscombe.csv")
# Convert pandas dataframe into pandas series
list1 = df['x1']
list2 = df['y1']
# Function to plot scatter
plt.scatter(list1, list2)
# Function to show the plot
plt.show()
# Similarly plot scatter plot for other 3 data sets
# This code is contributed by Amiya Rout
对于回归线,请参阅此。
输出:
注意:在定义中提到,Anscombe 的四重奏由四个数据集组成,这些数据集具有几乎相同的简单统计属性,但在绘制图表时却显得非常不同。
此输出的解释:
- 在第一个(左上角)中,如果您查看散点图,您会发现 x 和 y 之间似乎存在线性关系。
- 在第二个(右上角)中,如果您查看此图,您可以得出结论,x 和 y 之间存在非线性关系。
- 在第三个(左下角)中,您可以说当所有数据点都存在完美的线性关系时,除了一个似乎是离群值很远的数据点。
- 最后,第四个(右下)展示了一个高杠杆点足以产生高相关系数的例子。
应用:
四重奏仍然经常用于说明在开始根据特定类型的关系进行分析之前以图形方式查看一组数据的重要性,以及描述现实数据集的基本统计属性的不足。