楼主: CDA网校
350 1

[每天一个数据分析师] 统计学极简入门——区间估计 [推广有奖]

管理员

大师

62%

还不是VIP/贵宾

-

威望
3
论坛币
31793 个
通用积分
3041.9852
学术水平
260 点
热心指数
268 点
信用等级
235 点
经验
194804 点
帖子
5108
精华
19
在线时间
3693 小时
注册时间
2019-9-13
最后登录
2024-4-30

初级热心勋章

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

4. 区间估计

还以为你被上节课的内容唬住了~终于等到你,还好没放弃!

本节我们将说明两个问题:总体均值 μ\mu 的区间估计总体比例 pˉ\bar{p} 的区间估计

区间估计经常用于质量控制领域来检测生产过程是否正常运行或者在“控制之中” ,也可以用来监控互联网领域各类数据指标是否在正常区间。

一个总体均值的区间估计

  • 大样本的情况下

    • σ\sigma已知,xˉ±zα/2σn\bar{x} \pm {z_{\alpha/2} {\frac{\sigma}{\sqrt{n}}}}

    • σ\sigma未知,xˉ±zα/2sn\bar{x} \pm {z_{\alpha/2} {\frac{s}{\sqrt{n}}}}

  • 小样本的情况下

    • σ\sigma已知,xˉ±zα/2σn\bar{x} \pm {z_{\alpha/2} {\frac{\sigma}{\sqrt{n}}}}
    • σ\sigma未知,xˉ±tα/2sn\bar{x} \pm {t_{\alpha/2} {\frac{s}{\sqrt{n}}}}

另外补充一个公式,样本量
n=(zα/2)2σ2E2n = \frac{({z_{\alpha/2})^2 {\sigma}^2}}{E^2}
这个了解就好,大部分情况下是不缺数据的,尽可能选数据量稍大些的数据。

把以上过程编写成Python的自定义函数:

import numpy as np
import scipy.stats
from scipy import stats as sts


def mean_interval(mean=None, sigma=None,std=None,n=None,confidence_coef=0.95):
    """
    mean:样本均值
    sigma: 总体标准差
    std: 样本标准差
    n:   样本量
    confidence_coefficient:置信系数
    confidence_level:置信水平 置信度
    alpha:显著性水平
    功能:构建总体均值的置信区间
    """
    alpha = 1 - confidence_coef
    z_score = scipy.stats.norm.isf(alpha / 2)            # z分布临界值
    t_score = scipy.stats.t.isf(alpha / 2, df = (n-1) )  # t分布临界值
   
    if n >= 30: 
        if sigma != None:
            me = z_score * sigma / np.sqrt(n)
            print("大样本,总体 sigma 已知:z_score:",z_score)
        elif sigma == None:
            me = z_score * std / np.sqrt(n)
            print("大样本,总体 sigma 未知 z_score",z_score)
        lower_limit = mean - me
        upper_limit = mean + me
    if n < 30 :
        if sigma != None:
            me = z_score * sigma / np.sqrt(n)
            print("小样本,总体 sigma 已知 z_score * sigma / np.sqrt(n) \n z_score = ",z_score)
        elif sigma == None:
            me = t_score * std / np.sqrt(n)
            print("小样本,总体 sigma 未知 t_score * std / np.sqrt(n) \n t_score = ",t_score)
            
        print("t_score:",t_score)
        lower_limit = mean - me
        upper_limit = mean + me
    
    return (round(lower_limit, 1), round(upper_limit, 1))
应用:网站流量UV区间估计:

某网站流量UV数据如下[52,44,55,44,45,59,50,54,62,46,54,42,60,62,43,42,48,55,57,56],我们研究一下该网站的总体流量uv均值:

先把数据放进来

import numpy as np
data = np.array([52,44,55,44,45,59,50,54,62,46,54,42,60,62,43,42,48,55,57,56])

计算一下均值为:

x_bar = data.mean()
x_bar
# 51.5

样本标准差为:

x_std = sts.tstd(data,ddof = 1) #  ddof=1时,分母为n-1;ddof=0时,分母为n
x_std
# 6.840283158189472
mean_interval(mean=x_bar, sigma=None,std= x_std,  n=n, confidence_coef=0.95)

输出结果:

小样本,总体 sigma 未知 t_score * std / np.sqrt(n) 
t_score =  2.093024054408263
(48.3, 54.7)

于是我们有95%的把握,该网站的流量uv介于 [48, 55]之间。

值得一提的是,上面这个案例的数据是实际上是公众号山有木兮水有鱼 的按天统计阅读量……有人可能要说了,你这数据也太惨了,而且举个案例都是小样本。我想说,小样本的原因是这新号一共发了也没几天,至于数量低,你帮忙动动小手转发转发,这数据也就高了~希望下次举例的时候这个能变成大样本,均值怎么着也得个千儿八百的,感谢感谢!

一个总体比例的区间估计

pˉ±zα/2pˉ(1pˉ)n\bar{p}\pm {z_{\alpha/2}} \sqrt{\frac{\bar{p}(1-\bar{p})}{n}}

其中样本量 $ n = \frac{{({z_{\alpha/2})^2}} p^* (1-p{*})}{E2}$

def proportion_interval(p=None, n=None, confidence_coef =0.95):
    """
    p: 样本比例
    n: 样本量
    confidence_coef: 置信系数
    功能:构建总体比例的置信区间
    """
    alpha = 1 - confidence_coef
    z_score = scipy.stats.norm.isf(alpha / 2)  # z分布临界值
    
    me = z_score * np.sqrt((p * (1 - p)) / n) 
    lower_limit = p - me
    upper_limit = p + me
    
    return (round(lower_limit, 3), round(upper_limit, 3))

下期将为大家带来《Python统计学极简入门》之假设检验

点击下方链接,观看下期内容。
cda链接:https://edu.cda.cn/goods/show/3386

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:区间估计 统计学 coefficient confidence Proportion

沙发
yyss007 发表于 2023-9-5 11:50:59 |只看作者 |坛友微信交流群
点赞楼主分享,太棒了!

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-3 02:10