求离散数据的突变点_数据分析 | 推论统计分析 Inferential statistics

49812162a2206d4ba5d177a6c309a430.png

推论统计(Inferential statistics)是借助抽样调查,从局部推断总体,以对不肯定的事物做出决策的一种统计。有总体参数估计与假设检验两种。前者以一次性抽样实验为依据,对整个总体的某个数字特征做出估计。后者则是对某种假设进行检验,根据计算结果推断所做的假设是否可以接受。如平均数、标准差、相关系数、回归系数等特征的总体估计及差异显著性检验。推断统计的理论基础是概率论,它更多地需要借助抽样理论与方法[1]

本文框架:

571cc7c2941f48ff531ac1dd23ed0860.png

一、概率分布

1.离散分布

1)基础知识

da247ec87f1c4d71d8db0c0500463ea9.png

2)Python实现

plot默认绘制折线,如果只绘制点,只需传入下面的参数:
marker:点的形状,值o表示点为圆圈标记(circle marker)
linestyle:线条的形状,值None表示不显示连接各个点的折线
vlines用于绘制竖直线(vertical lines),参数说明:
vline(x坐标值, y坐标最小值, y坐标值最大值)
  • 伯努利分布Bernoulli distribution
#导入包
#数组包
import numpy as np
#绘图包
import matplotlib.pyplot as plt
#统计计算包的统计模块
from scipy import stats
X = np.arange(0, 2,1)
p = 0.5 # 硬币朝上的概率
pList = stats.bernoulli.pmf(X, p)
plt.plot(X, pList, marker='o',linestyle='None')
plt.vlines(X, 0, pList)
#x轴文本
plt.xlabel('随机变量:抛硬币1次')
#y轴文本
plt.ylabel('概率')
#标题
plt.title('伯努利分布:p=%.2f' %  p)
#显示图形
plt.show()

c328c7175261eedb9767e98a8d0af9b0.png
  • 二项分布Binomial Distribution
#导入包
#数组包
import numpy as np
#绘图包
import matplotlib.pyplot as plt
#统计计算包的统计模块
from scipy import stats
#第1步,定义随机变量:5次抛硬币,正面朝上的次数
n = 5   # 做某件事情的次数
p = 0.5 # 做某件事情成功的概率
X = np.arange(0, n+1,1)
#第2步,#求对应分布的概率:概率质量函数 (PMF)
#它返回一个列表,列表中每个元素表示随机变量中对应值的概率
pList = stats.binom.pmf(X, n, p)
#第3步,绘图
plt.plot(X, pList, marker='o',linestyle='None')
plt.vlines(X, 0, pList)
#x轴文本
plt.xlabel('随机变量:抛硬币正面朝上次数')
#y轴文本
plt.ylabel('概率')
#标题
plt.title('二项分布:n=%i,p=%.2f' % (n,p))
#显示图形
plt.show()

3d8fcd0d2e94ee16bf0e3a3487211502.png
  • 几何分布Geometric distribution
#导入包
#数组包
import numpy as np
#绘图包
import matplotlib.pyplot as plt
#统计计算包的统计模块
from scipy import stats
#第k次做某件事情,才取到第1次成功
k = 5   
#做某件事情成功的概率,这里假设每次成功概率都是60%
p = 0.6 
X = np.arange(1, k+1,1)
pList = stats.geom.pmf(X,p)
plt.plot(X, pList, marker='o',linestyle='None')
plt.vlines(X, 0, pList)
#x轴文本
plt.xlabel('随机变量:第k次才首次成功')
#y轴文本
plt.ylabel('概率')
#标题
plt.title('几何分布:p=%.2f' % p)
#显示图形
plt.show()

fc0cf10efbb3563194c8fe27b9908cc1.png
  • 泊松分布Poisson distribution
#导入包
#数组包
import numpy as np
#绘图包
import matplotlib.pyplot as plt
#统计计算包的统计模块
from scipy import stats
#第1步:定义随机变量:已知某市平均一天发生事故的次数是2,求每天发生4次的概率是多少?
mu=2  #mu表示每天发生的次数是2次
k=4  #每天发生4次
X=np.arange(0,k+1,1)
#第2步:求PMF
pList=stats.poisson.pmf(X,mu)
#第3步:绘图
plt.plot(X, pList, marker='o',linestyle='None')
plt.vlines(X, 0, pList)
#x轴文本
plt.xlabel('随机变量:某市发生k次事故')
#y轴文本
plt.ylabel('概率')
#标题
plt.title('泊松分布:平均值=%i' %  mu)
#显示图形
plt.show()

1dfb1d5802beacc0235e56d2b7443c92.png

2.连续分布

1)基础知识

8ad4fa45e45abb032f3547e7c5107101.png

下面是z值表,通过z值查找相应的概率。查询步骤:例如z=1.15,可以先在第一列找到1.1,然后在第一行找到0.05,分别作垂线,相交的点对应的数值即为概率。

9e786c2b0c406675d689d0fd82e51501.png
z值表

2)Python实现

  • 正态分布Normal distribution
#导入包
#数组包
import numpy as np
#绘图包
import matplotlib.pyplot as plt
#统计计算包的统计模块
from scipy import stats
#第1步,定义随机变量:
mu=0 #平均值
sigma= 1 #标准差
X = np.arange(-5, 5,0.1)
#第2步,概率密度函数(PDF)
y=stats.norm.pdf(X,mu,sigma)
#第3步,绘图
plt.plot(X, y)
#x轴文本
plt.xlabel('随机变量:x')
#y轴文本
plt.ylabel('概率:y')
#标题
plt.title('正态分布:$mu$=%.1f,$sigma^2$=%.1f' % (mu,sigma))
#网格
plt.grid()
#显示图形
plt.show()

49488d7eb4af5144482b7fb5247c8722.png
  • 幂律分布Power-law distrubition

参考:Python数据可视化:幂律分布

#导入包
import matplotlib.pyplot as plt
import numpy as np
from scipy.stats import norm
#第1步:定义随机变量X
X = np.arange(10, 1010, 10)  #生成100个数据点
#第2步:生成因变量Y
noise=norm.rvs(0, size=100, scale=0.2)  # 生成50个正态分布scale=0.2控制噪声强度
Y=[]
for i in range(len(X)):
    Y.append(10.8*pow(X[i],-0.3)+noise[i])  # 得到Y=10.8*x^-0.3+noise
#第3步:绘图
# plot raw data
Y=np.array(Y)
#x轴文本
plt.xlabel('随机变量:x')
#y轴文本
plt.ylabel('因变量:y')
#标题
plt.title("幂律分布")
plt.scatter(X, Y, color='black')
plt.show()

b549a0058fb60a24da6ffbd88abd2b62.png

二、抽样分布

1.总体与样本

  • 总体是研究对象的整个群体;
  • 样本是从总体中选取的一部分,用于代表总体;
  • 样本数量是你有多少个样本,样本大小(样本容量)是每个样本里有多少个数据;
  • 将样本平均值的分布可视化,叫做抽样分布。

2.中心极限定理

  • 样本平均值约等于总体平均值;
  • 不管总体是什么分布,任意一个总体的样本平均值都会为围绕在总体的平均值周围,并且成正态分布。

中心极限定理演示地址:http://onlinestatbook.com/stat_sim/sampling_dist/index.html

5a1b530191d3a517fc8ec7ff3157129a.png

1)用样本估计总体

样本均值约等于总体平均值;

样本估计总体的标准差:

6782af2b25cd48c1d441c28e14d0272b.png
n-1表示有n-1个自由样本可选择

2)根据总体信息,判断某个样本属于总体

3c8ba372cb5a0d31e7760009a2c42e5e.png

总体中的个体离均值的偏离程度,测量出的σ(西格玛,标准误差)表征着诸如单位缺陷、百万缺陷或错误的概率性,σ值越大,缺陷或错误就越少。这个σ是对于固定的一组数据和曲线来说的,而对于两组数据来说这个σ是不能直接比较的。如图,σ对于曲线来说是相对的,曲线的平均值到其中一个控制线(上限或下限)的值固定,当如上图的离散度大时σ也大,曲线的平均值到其中一个控制线只相当于3σ;而当如下图的离散度小时σ也小,曲线的平均值到其中一个控制线却相当于6σ[2]

cff8b39ac323b094b8cb90dcac2fded1.png
样本平均值概率图

3.随机抽样的应用

  • 数据框(DataFrame)抽样
#导入包
import numpy as np #数组包
import pandas as pd #数据分析包
df = pd.DataFrame(np.arange(5 * 4).reshape((5, 4)))
#随机选择一个n行的子集
sample1=df.sample(n=3)
sample1

c036833f4b4386a3fcd12db5a2f40536.png
  • 抽奖
#应用案例:从500个用户中随机抽取10个人作为中奖者
for i in range(10):
    userId=random.randint(0,500)
    #用%s格式化字符串
    print('第 %s 位获奖用户id是 %s' % (i,userId) )

c838b7b89100fa571d89a2f2fa524905.png
  • 机器学习
from sklearn.cross_validation import train_test_split 
#建立模型用的训练数据集和测试数据集
train_X, test_X, train_y, test_y = train_test_split(source_X , source_y,train_size=.8)
#输出数据集大小
print ('原始数据集特征:',source_X.shape, 
       '训练数据集特征:',train_X.shape ,
      '测试数据集特征:',test_X.shape)
print ('原始数据集标签:',source_y.shape, 
       '训练数据集标签:',train_y.shape ,
      '测试数据集标签:',test_y.shape)

dbca3b049d8f17db145b512292aa5149.png

4.偏见的产生和避免

1)样本偏差

由样本抽取的方式存在问题导致的,常见的样本偏差有两种,一种是所抽取的样本不是随机的,另一种是抽取的样本数量不够多。

避免方法:采取随机抽取的方式如抽签、抽取足够的样本数量。

2)幸存者偏差

指的是当取得资讯的渠道,仅来自于幸存者时,此资讯可能会存在与实际情况不同的偏差。人们只看到经过某种筛选而产生的结果,而没有意识到筛选的过程,因此忽略了被筛选掉的关键信息。

避免方法:逆向思考、假设检验法。

3)概率偏见

我们的直觉和客观概念常常是不相符的。诺贝尔经济学奖得主,行为经济学家丹尼尔卡尼曼认为,这种偏见主要来自于三个原因:代表性偏差(以偏概全),可得性偏差(眼见为实),沉锚效应(先入为主)。

避免方法:学习概率论与数理统计、避免用直觉判断。

4)信息茧房

指人们的信息领域会习惯性地被自己的兴趣所引导,从而将自己的生活桎梏于像蚕茧一般的“茧房”中的现象。

避免方法:远离舒适圈、拓宽自己的视野。

参考

  1. ^车文博.当代西方心理学新词典:吉林人民出版社,2001
  2. ^6西格玛 https://zhidao.baidu.com/question/394624914.html
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值