统计函数在数据分析和科学计算中非常重要,Python 的 statistics 模块提供了一些常用的统计函数,用于计算数据集的中心趋势、散布度和相关性等。以下是一些常用的 statistics 模块函数及其解释、数学公式以及代码示例:
1. 中心趋势
平均值 (mean
)
计算数据集的算术平均值。 数学公式:
$$ \text{mean} = \frac{\sum_{i=1}^{n} x_i}{n} $$
其中,$ x_i $ 是数据集中的第 $ i $ 个数据点,$ n $ 是数据点的数量。
1 2 3 4 5 |
import statistics data = [1, 2, 3, 4, 5] mean_value = statistics.mean(data) print(f"Mean of data: {mean_value}") |
中位数 (median
)
计算数据集的中位数。
数学公式:
如果数据集长度 $ n $ 是奇数:中位数是排序后的中间值。
如果数据集长度 $ n $ 是偶数:中位数是排序后中间两个值的平均值。
1 2 3 4 5 |
import statistics data = [1, 2, 3, 4, 5] median_value = statistics.median(data) print(f"Median of data: {median_value}") |
众数 (mode
)
计算数据集的众数(出现频率最高的值)。
1 2 3 4 5 |
import statistics data = [1, 2, 2, 3, 4, 4, 4, 5] mode_value = statistics.mode(data) print(f"Mode of data: {mode_value}") |
2. 分布特征
调和平均数 (harmonic_mean
)
计算数据集的调和平均数。 数学公式:
$$ \text{harmonic mean} = \frac{n}{\sum_{i=1}^{n} \frac{1}{x_i}} $$
其中,$ x_i $ 是数据集中的第 $ i $ 个数据点,$ n $ 是数据点的数量。
1 2 3 4 5 |
import statistics data = [1, 2, 3, 4, 5] harmonic_mean_value = statistics.harmonic_mean(data) print(f"Harmonic mean of data: {harmonic_mean_value}") |
几何平均数 (geometric_mean
)
计算数据集的几何平均数。
数学公式:
$$ \text{geometric mean} = \sqrt[n]{x_1 \cdot x_2 \cdot \ldots \cdot x_n} $$
其中,$ x_i $ 是数据集中的第 $ i $ 个数据点,$ n $ 是数据点的数量。
1 2 3 4 5 |
import statistics data = [1, 2, 3, 4, 5] geometric_mean_value = statistics.geometric_mean(data) print(f"Geometric mean of data: {geometric_mean_value}") |
3. 散布度
总体方差 (pvariance
)
计算数据集的总体方差。 数学公式:
$$ \text{population variance} = \frac{\sum_{i=1}^{n} (x_i – \mu)^2}{n} $$
其中,$ \mu $ 是数据集的均值,$ n $ 是数据点的数量。
1 2 3 4 5 |
import statistics data = [1, 2, 3, 4, 5] pvariance_value = statistics.pvariance(data) print(f"Population variance of data: {pvariance_value}") |
样本方差 (variance
)
计算数据集的样本方差。 数学公式:
$$ \text{sample variance} = \frac{\sum_{i=1}^{n} (x_i – \bar{x})^2}{n-1} $$
其中,$ \bar{x} $ 是数据集的样本均值,$ n $ 是数据点的数量。
1 2 3 4 5 |
import statistics data = [1, 2, 3, 4, 5] variance_value = statistics.variance(data) print(f"Sample variance of data: {variance_value}") |
总体标准差 (pstdev
)
计算数据集的总体标准差,是总体方差的平方根。 数学公式:
$$ \text{population standard deviation} = \sqrt{\text{population variance}} $$
1 2 3 4 5 |
import statistics data = [1, 2, 3, 4, 5] pstdev_value = statistics.pstdev(data) print(f"Population standard deviation of data: {pstdev_value}") |
样本标准差 (stdev
)
计算数据集的样本标准差,是样本方差的平方根。 数学公式:
$$ \text{sample standard deviation} = \sqrt{\text{sample variance}} $$
1 2 3 4 5 |
import statistics data = [1, 2, 3, 4, 5] stdev_value = statistics.stdev(data) print(f"Sample standard deviation of data: {stdev_value}") |
4. 相关性和回归
样本协方差 (covariance
)
计算两个数据集的样本协方差。 数学公式:
$$ \text{sample covariance} = \frac{\sum_{i=1}^{n} (x_i – \bar{x})(y_i – \bar{y})}{n-1} $$
其中,$ \bar{x} $ 和 $ \bar{y} $ 分别是两个数据集的样本均值,$ n $ 是数据点的数量。
1 2 3 4 5 6 |
import statistics data1 = [1, 2, 3, 4, 5] data2 = [5, 4, 3, 2, 1] covariance_value = statistics.covariance(data1, data2) print(f"Sample covariance between data1 and data2: {covariance_value}") |
皮尔逊相关性系数 (correlation
)
计算两个数据集的皮尔逊相关性系数。 数学公式:
$$ \text{Pearson correlation coefficient} = \frac{\text{sample covariance}(x, y)}{\text{stdev}(x) \times \text{stdev}(y)} $$
1 2 3 4 5 6 |
import statistics data1 = [1, 2, 3, 4, 5] data2 = [5, 4, 3, 2, 1] correlation_value = statistics.correlation(data1, data2) print(f"Pearson correlation coefficient between data1 and data2: {correlation_value}") |
一元线性回归函数 (linregress
)
计算两个数据集之间的线性回归模型,返回斜率、截距、相关系数等信息。
1 2 3 4 5 6 |
import statistics data1 = [1, 2, 3, 4, 5] data2 = [5, 4, 3, 2, 1] slope, intercept = statistics.linear_regression(data1, data2) print(f"Slope: {slope}, Intercept: {intercept}") |
示例和打印结果
下面是一个完整的示例,演示了如何使用 statistics
模块中的函数,并打印出各项统计结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
import statistics # 数据集 data1 = [1, 2, 3, 4, 5] data2 = [5, 4, 3, 2, 1] # 计算平均值 mean_value = statistics.mean(data1) print(f"Mean of data1: {mean_value}") # 计算中位数 median_value = statistics.median(data1) print(f"Median of data1: {median_value}") # 计算众数 mode_value = statistics.mode(data1) print(f"Mode of data1: {mode_value}") # 计算分位数 quantiles_value = statistics.quantiles(data1 ) print(f"Quantiles of data1: {quantiles_value}") # 计算总体方差 pvariance_value = statistics.pvariance(data1) print(f"Population variance of data1: {pvariance_value}") # 计算样本方差 variance_value = statistics.variance(data1) print(f"Sample variance of data1: {variance_value}") # 计算总体标准差 pstdev_value = statistics.pstdev(data1) print(f"Population standard deviation of data1: {pstdev_value}") # 计算样本标准差 stdev_value = statistics.stdev(data1) print(f"Sample standard deviation of data1: {stdev_value}") # 计算样本协方差 covariance_value = statistics.covariance(data1, data2) print(f"Sample covariance between data1 and data2: {covariance_value}") # 计算皮尔逊相关性系数 correlation_value = statistics.correlation(data1, data2) print(f"Pearson correlation coefficient between data1 and data2: {correlation_value}") # 计算一元线性回归函数 slope, intercept = statistics.linear_regression(data1, data2) print(f"Linear regression: Slope={slope}, Intercept={intercept}") |
1 2 3 4 5 6 7 8 9 10 11 |
Mean of data1: 3 Median of data1: 3 Mode of data1: 1 Quantiles of data1: [1.5, 3.0, 4.5] Population variance of data1: 2 Sample variance of data1: 2.5 Population standard deviation of data1: 1.4142135623730951 Sample standard deviation of data1: 1.5811388300841898 Sample covariance between data1 and data2: -2.5 Pearson correlation coefficient between data1 and data2: -1.0 Linear regression: Slope=-1.0, Intercept=6.0 |
这些函数展示了如何使用 statistics
模块进行数据分析,包括计算中心趋势、分布特征、散布度、相关性和回归分析等。每个函数的数学公式和相应的打印结果也显示了它们的应用和计算结果。