DATApython进行样本分布检验
0
引言
问题:如何检验数据的抽样的某个维度是符合某种分布的?譬如,是否是正态分布,是否与总体的分布相同等?工具:python。接下来一起看看数据分析中重要的一环“单变量的样本分布检验”。
01思路探索数据变量之间是否存在某种关系/关联。大致思路有:
①确认变量的类型:[类别型、数值型];
②可视化给出可能的方向:[散点图、箱型图、直方图、…];
③需建立更严格的分析方式:假设检验。假设变量间存在某种函数/逻辑等关联关系,进行检验。
02工具打开jupyter notebook (或者你自己使用的python代码编辑器),安装并导入几个数据分析固定库。
import numpy as np #科学计算基础库,多维数组对象ndarrayimport pandas as pd #数据处理库,DataFrame(二维数组)import matplotlib as mpl #画图基础库import matplotlib.pyplot as plt #最常用的绘图库from scipy import stats #scipy库的stats模块mpl.rcParams["font.family"]="SimHei" #使用支持的黑体中文字体mpl.rcParams["axes.unicode_minus"]=False #用来正常显示负号 "-"plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签# % matplotlib inline #jupyter中用于直接嵌入图表,不用plt.show()import warningswarnings.filterwarnings("ignore") #用于排除警告# 用于显示使用库的版本print("numpy_" + np.__version__)print("pandas_" + pd.__version__)print("matplotlib_"+ mpl.__version__)
03用数字特征检验样本分布
分布的数字特征是否与理论的数字特征一致?
t分布序列数字特征检验。
# 例:生成一个t分布序列import numpy as np from scipy import stats #scipy库的stats模块np.random.seed(10) # 先生成一个种子生成器,以后生成的随机数就是一定的,参数为任意数字x = stats.t.rvs(10, size=10000) #生成服从t分布,自由度为10的10000个随机数(rvs生成随机数)#display(x)#下面计算其数字特征print(np.min(x), np.max(x),np.mean(x),np.median(x))#最小值,最大值,均值,中位数, print(np.var(x),np.std(x),stats.mode(x))# 方差,标准差,众数及个数display(stats.describe(x)) #使用stats.describe()做统计n, (smin, smax), sm, sv, ss, sk = stats.describe(x)print( n, (smin, smax), sm, sv, ss, sk) #数量,(最小值,最大值),均值,方差,偏度,峰度
#计算理论数字特征---发现随机样本和理论还是存在差异的m, v, s, k = stats.t.stats(10, moments='mvsk')print(m,v,s,k)#m均值,v方差,s偏度,k峰度# 结果:0.0 1.25 0.0 1.0
04T-test(严格的检验)
t-test检验是检验一个或两个样本之间的均值是否有明显的差别,也就是检验单变量对因变量的影响。
stats.ttest_1samp(x,m) # 用t-test检验来检验