目录:
- 5.1 描述性统计分析
- (1)基本统计学概念
- (2)统计量
- (3)离散程度
- (4)点估计和区间估计
- 5.2 假设检验
- (1)假设检验概念
- (2)假设检验基本步骤
- (3)显著性水平与拒绝域
- (4)单样本t检验
- (5)双样本t检验
5.1 描述性统计分析
(1)基本统计学概念
- 总体
- 样本
(2)统计量
可以在一定程度上反应总体的特征,从样本数据中计算得到,常见统计量包括:
- 均值
- 标准差
- 中位数
- 分位数
- 众数
(3)离散程度
统计量可以对数据有个大体的认识,仅反应了数据的某些趋势,常见的离散程度有:
- 极差
- 四分位差
- 方差
- 变异系数
import pandas as pd
import os
os.chdir(r'C:\Users\Administrator.DESKTOP-0L8IC5U\Desktop\数据分析\data')
insuance = pd.read_csv('train.csv', encoding='utf-8', dtype={'Gender': 'str'})
a = insuance['Age'].mean()
b = insuance['Age'].std()
c = insuance['Age'].median()
d = insuance['Age'].quantile([0, 0.05, 0.25, 0.5, 0.75])
print(a, '\n', b, '\n', c, '\n', d)
e = insuance['Gender'].value_counts()
f = insuance['Gender'].mode()
print(e, '\n', f, '\n')
g = insuance['Age'].max() - insuance['Age'].min()
h = insuance['Age'].quantile(0.75) - insuance['Age'].quantile(0.25)
cv = insuance['Age'].std() / insuance['Age'].mean() # 变异系数
print(g, h, cv)
(4)点估计和区间估计
- 点估计:用样本统计量去估计总体参数
例如:假设有很多人,经过抽样计算出样本的身高平均值为168cm,那么就推断出这些人的平均身高为168cm - 区间估计:能够提供待估计的参数的置信区间和保证程度(置信度);区间估计用一个包括有真实值的区间范围来估计参数的取值范围,得到的结果为置信区间;区间估计的可信程度为置信度或者置信水平,一般用1-α表示
例如:有95%的可能性可以确定总体增长率在区间4.5%-6%之间,其中4.5%-6%就是置信区间,95%是置信度
①置信度和置信区间
②中心极限定理
import numpy as np
import pandas as pd
from scipy import stats
import os
os.chdir(r'C:\Users\Administrator.DESKTOP-0L8IC5U\Desktop\数据分析\data')
insuance = pd.read_csv('train.csv', encoding='utf-8', dtype={'Gender': 'str'})
# 点估计
insuance['Age'].mean()
# 区间估计
# 计算标准误差 s/根号n
se = stats.sem(insuance['Age'])
# 和se一样
n = len(insuance['Age'])
se_ = insuance['Age'].std() / np.sqrt(n)
interval = stats.norm.interval(0.95, insuance['Age'].mean(), se)
print(interval)
a = insuance['Age'].mean() - 1.96 * se
b = insuance['Age'].mean() + 1.96 * se
print(a, b)
5.2 假设检验
(1)假设检验概念
(2)假设检验基本步骤
- 提出原假设和备择假设
- 确定适当的检验统计量
- 规定显著性水平α
- 计算检验统计量的值
- 做出决策
(3)显著性水平与拒绝域
(4)单样本t检验
(5)双样本t检验
步骤:
import pandas as pd
from scipy import stats
import os
import statsmodels.api as sm
os.chdir(r'C:\Users\Administrator.DESKTOP-0L8IC5U\Desktop\数据分析\data')
insuance = pd.read_csv('train.csv', encoding='utf-8', dtype={'Gender': 'str'})
# 单样本t检验
a = insuance['Age'].mean()
d1 = sm.stats.DescrStatsW(insuance['Age'])
b = d1.ttest_mean(38)
# 双样本t检验
insuance.groupby('Gender').mean()['Policy_Sales_Channel']
gender0 = insuance[insuance['Gender'] == 'Male']['Policy_Sales_Channel']
gender1 = insuance[insuance['Gender'] == 'Female']['Policy_Sales_Channel']
leveneTestRes = stats.levene(gender0, gender1)
stats.stats.ttest_ind(gender0, gender1, equal_var=True)