目录
1.单因子分析和对比分析必要的理论知识
2.编码实现
集中趋势:均值,中位数,分位数,众数
离中趋势:标准差、方差
数据分布:偏态与峰态、正太分布于三大分布
抽样理论:抽样误差、抽样精度
(1)集中趋势:均值,中位数,分位数,众数
均值:经常用来衡量连续值、分布比较规律的连续值的集中趋势
中位数:衡量异常值(有些值很大,有些值很小)
众数:离散值的集中趋势衡量
分位数:与以上三个值共同作用,产生比较好的作用
分位数是指把数据从小到大排列,切分成等分的数据点,最常用的是4分位数。四分位数(Quartile)也称四分位点,是指在统计学中把所有数值由小到大排列并分成四等份,处于三个分割点位置的数值。
4分位数的计算 方法:
Q1的位置= (n+1) × 0.25
Q2的位置= (n+1) × 0.5
Q3的位置= (n+1) × 0.75
(2)离中趋势:标准差、方差
(3)数据分布:偏态与峰态、正太分布于三大分布
偏态系数就是数据平均值偏离状态的一种衡量 ,公式如下:
如果S为正,就是正偏,说明均值比较大;S为负,就是负偏,说明均值比较小。
峰态系数,数据分布集中强度的衡量,值越大,顶就越尖
正态分布
卡方分布:几个标准正太分布(均值为0,方差为1)的平方和满足于一个分布,就是卡方分布。
T分布:正太分布的一个随机变量除以一个服从卡方分布的变量所服从的分布,T分布经常用来根据小样本来估计成正太分布且方差未知的总体的均值。
F分布:是由两个服从卡方分布的随机变量的比构成的分布。
(4)抽样理论:抽样误差、抽样精度
全量计算的成本大,但是现在大数据的发展,成本会越来越小;还有一种情况是全量的检验是不现实的,例如测灯泡的寿命。抽样方式有多种:完全随机抽样,等差距抽样,分类的分层抽样等。
例子:
解:由题意得,这是重复抽样,误差为0.07公斤,要保证95.45%的概率的话,每条草鱼的重量范围在[2-(2*0.07), 2+(2*0.07)],即可以保证95.45%的概率草鱼的重量在1.86到2.14kg范围内。
(1)Pandas 常用的数据结构有两种:Series 和 DataFrame
Series 是一个带有 名称 和索引的一维数组,既然是数组,肯定要说到的就是数组中的元素类型,在 Series 中包含的数据类型可以是整数、浮点、字符串、Python对象等。
DataFrame 是一个带有索引的二维数据结构,每列可以有自己的名字,并且可以有不同的数据类型。你可以把它想象成一个 excel 表格或者数据库中的一张表,DataFrame 是最常用的 Pandas 对象。
关于详解Pandas常用数据结构的博客:https://juejin.im/post/5b34408f51882574d20bbbf7
(2)pandas如何均值、方差等
import pandas as pd
file = pd.read_csv("./data/HR.csv")
file['satisfaction_level'].mean() #求均值
file['satisfaction_level'].median() #求中位数
file['satisfaction_level'].quantile(q=0.25) #求satisfaction_level这一列的四分位数
file['satisfaction_level'].mode() # 求众数
file["number_project"].std() # 标准差
file["number_project"].var() # 方差
file["number_project"].sum() #方差
file["number_project"].skew() # 偏态系数
file["number_project"].kurt() # 峰态系数
(3)生成正太分布函数、T分布、F分布
import scipy.stats as ss
ss.norm # 生成标准正态分布函数
ss.norm.stats(moments="mvsk") #返回m,v,s,k. m表示均值mean,v方差,s偏态系数,k峰态系数
ss.norm.pdf(x= 0.0) # 返回x对应得y值
ss.norm.ppf(q = 0.9) # x必须是0~1之间的数,返回的是从负无穷到0.9所对应得y的累加和
ss.norm.cdf(2) # 表示x从负无穷到2的累积概率是多少
ss.norm.rvs(size =10)# 生成size个符合正太分布的数字
ss.t # T分布函数,也有pdf、ppf、cdf、rvs可用
ss.f # F分布函数,也有pdf、ppf、cdf、rvs可用
(4)抽样
# 抽样
import pandas as pd
file = pd.read_csv("./data/HR.csv")
print(file.sample(10)) # 每个属性中抽10个
print(file.sample(frac=0.001)) # 抽总体样本的0.1%个数据
print(file["satisfaction_level"].sample(10)) # 抽取“satisfaction_level”这个属性的10个样本
结果为: