第七讲(上) 一元统计与Python应用¶
一、课程介绍¶
Python是一种广泛使用的高级编程语言,它在数据分析和统计领域有着强大的应用。通过使用Python进行基本统计分析,我们可以对数据进行描述、推断和预测。本课程将涵盖Python基本统计分析的主要内容,包括数据的描述性统计、概率分布、假设检验、相关性分析和回归分析等。通过本课程的学习,你将能够使用Python进行基本的统计分析,并为更高级的数据分析和机器学习打下坚实的基础。
二、Python统计分析基础¶
(一)Python统计分析相关库¶
1. NumPy¶
-
NumPy是Python中用于科学计算的基础库,提供了强大的数组操作功能。它支持大量的维度数组与矩阵运算,此外也提供了大量的数学函数库。
-
安装:
pip install numpy -
示例:
2. Pandas¶
-
Pandas是一个开源的Python数据分析库,提供了强大的数据结构和数据分析工具。它基于NumPy构建,提供了DataFrame和Series等数据结构,方便进行数据清洗、筛选、分组等操作。
-
安装:
pip install pandas -
示例:
3. SciPy¶
-
SciPy是基于NumPy的一个扩展库,提供了大量的科学计算功能,包括统计分析、优化、信号处理等。
-
安装:
pip install scipy -
示例:
4. Statsmodels¶
-
Statsmodels是一个Python模块,提供了许多统计模型的估计和测试功能,包括线性回归、时间序列分析等。
-
安装:
pip install statsmodels -
示例:
5. Matplotlib和Seaborn¶
-
Matplotlib和Seaborn是Python中用于数据可视化的库。Matplotlib提供了基本的绘图功能,而Seaborn则在Matplotlib的基础上提供了更高级的接口和美观的默认样式。
-
安装:
-
示例:
(二)数据类型和数据结构¶
1. 数据类型¶
-
Python中的数据类型包括整数(
int)、浮点数(float)、字符串(str)、布尔值(bool)等。 -
示例
:
2. 数据结构¶
-
列表(List)
:有序的集合,可以存储多个元素,支持动态扩展和修改。
- 示例
:
-
元组(Tuple)
:有序的集合,一旦创建,不能修改。
- 示例
:
-
字典(Dictionary)
:无序的键值对集合,通过键访问值。
- 示例
:
-
集合(Set)
:无序的不重复元素集合,支持集合运算(如并集、交集、差集等)。
- 示例
:
三、描述性统计¶
(一)集中趋势¶
1. 均值(Mean)¶
-
均值是所有数据的总和除以数据的数量。
-
示例:
2. 中位数(Median)¶
-
中位数是将数据从小到大排序后位于中间的值。
-
示例
:
3. 众数(Mode)¶
-
众数是数据中出现次数最多的值。
-
示例:
(二)离散程度¶
1. 极差(Range)¶
-
极差是数据中的最大值与最小值之差。
-
示例
:
2. 方差(Variance)¶
-
方差是各数据与其均值差的平方的平均值。
-
示例
:
3. 标准差(Standard Deviation)¶
-
标准差是方差的平方根。
-
示例
:
4. 变异系数(Coefficient of Variation)¶
-
变异系数是标准差与均值的比值。
-
示例
:
(三)分布形状¶
1. 偏度(Skewness)¶
-
偏度是数据分布的对称性度量。
-
示例
:
2. 峰度(Kurtosis)¶
-
峰度是数据分布的尖峭度或尾部厚度的度量。
-
示例
:
四、概率分布¶
(一)离散分布¶
1. 伯努利分布(Bernoulli Distribution)¶
-
伯努利分布是单次随机试验的结果只有两种可能(成功或失败)的概率分布。
-
示例:
2. 二项分布(Binomial Distribution)¶
-
二项分布是 n 次独立的伯努利试验中成功的次数的概率分布。
-
示例:
3. 泊松分布(Poisson Distribution)¶
-
泊松分布是单位时间内随机事件发生次数的概率分布。
-
示例:
(二)连续分布¶
1. 均匀分布(Uniform Distribution)¶
-
均匀分布是区间内所有值出现概率相等的概率分布。
-
示例:
2. 正态分布(Normal Distribution)¶
-
正态分布是连续随机变量的概率分布,其概率密度函数呈钟形。
-
示例:
3. 指数分布(Exponential Distribution)¶
-
指数分布是描述泊松过程中事件之间时间的概率分布。
-
示例:
五、假设检验¶
(一)t检验¶
1. 单样本t检验(One-Sample t-Test)¶
-
单样本t检验用于检验样本均值是否与已知的总体均值相等。
-
示例:
2. 双样本t检验(Two-Sample t-Test)¶
-
双样本t检验用于检验两个独立样本的均值是否相等。
-
示例:
(二)卡方检验(Chi-Square Test)¶
1. 独立性检验(Chi-Square Test of Independence)¶
-
独立性检验用于检验两个分类变量之间是否存在关联。
-
示例:
2. 拟合优度检验(Chi-Square Goodness of Fit Test)¶
-
拟合优度检验用于检验样本数据是否符合某个理论分布。
-
示例:
(三)方差分析(ANOVA)¶
1. 单因素方差分析(One-Way ANOVA)¶
-
单因素方差分析用于检验多个样本的均值是否相等。
-
示例:
六、相关性分析¶
(一)皮尔逊相关系数(Pearson Correlation Coefficient)¶
-
皮尔逊相关系数用于衡量两个变量之间的线性相关程度。
-
示例:
from scipy.stats import pearsonr
# 变量数据
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
# 计算皮尔逊相关系数
corr, p_val = pearsonr(x, y)
print(corr) # 输出 相关系数
print(p_val) # 输出 p值
(二)斯皮尔曼秩相关系数(Spearman Rank Correlation Coefficient)¶
-
斯皮尔曼秩相关系数用于衡量两个变量之间的单调相关程度。
-
示例:
from scipy.stats import spearmanr
# 变量数据
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
# 计算斯皮尔曼秩相关系数
corr, p_val = spearmanr(x, y)
print(corr) # 输出 相关系数
print(p_val) # 输出 p值
(三)肯德尔秩相关系数(Kendall Tau Correlation Coefficient)¶
-
肯德尔秩相关系数用于衡量两个变量之间的单调相关程度。
-
示例:
from scipy.stats import kendalltau
# 变量数据
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
# 计算肯德尔秩相关系数
corr, p_val = kendalltau(x, y)
print(corr) # 输出 相关系数
print(p_val) # 输出 p值
七、回归分析¶
(一)简单线性回归(Simple Linear Regression)¶
-
简单线性回归用于建立一个自变量与一个因变量之间的线性关系。
-
示例:
import statsmodels.api as sm
# 自变量和因变量
X = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
X = sm.add_constant(X) # 添加常数项
# 拟合线性回归模型
model = sm.OLS(y, X).fit()
print(model.summary())
(二)多元线性回归(Multiple Linear Regression)¶
-
多元线性回归用于建立多个自变量与一个因变量之间的线性关系。
-
示例:
# 自变量和因变量
X = [[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]]
y = [2, 3, 5, 7, 11]
X = sm.add_constant(X) # 添加常数项
# 拟合多元线性回归模型
model = sm.OLS(y, X).fit()
print(model.summary())
(三)逻辑回归(Logistic Regression)¶
-
逻辑回归用于处理因变量为二分类的情况。
-
示例:
from sklearn.linear_model import LogisticRegression
# 自变量和因变量
X = [[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]]
y = [0, 0, 1, 1, 1]
# 拟合逻辑回归模型
model = LogisticRegression()
model.fit(X, y)
# 预测
predictions = model.predict(X)
print(predictions)
八、总结与实践¶
通过本课程的学习,你已经掌握了如何使用Python进行基本的统计分析。你可以使用NumPy和Pandas进行数据处理,使用SciPy进行描述性统计和概率分布计算,使用Statsmodels进行假设检验、相关性分析和回归分析。此外,你还可以使用Matplotlib和Seaborn进行数据可视化。
为了更好地掌握这些技能,建议你通过实际项目进行练习。例如,可以尝试加载一个实际的数据集,使用Python进行描述性统计分析,进行假设检验,计算相关性,拟合回归模型,并对结果进行可视化。通过实践,你将更深入地理解Python在统计分析中的应用。
九、参考文献¶
- Python官方文档:https://docs.python.org/
- NumPy官方文档:https://numpy.org/doc/
- Pandas官方文档:https://pandas.pydata.org/docs/
- SciPy官方文档:https://docs.scipy.org/doc/scipy/
- Statsmodels官方文档:https://www.statsmodels.org/stable/index.html
- Matplotlib官方文档:https://matplotlib.org/stable/contents.html
- Seaborn官方文档:https://seaborn.pydata.org/