统计思维(实例2)——概率质量函数与累积分布函数

本文介绍了概率质量函数(PMF)和累积分布函数(CDF)的概念,并通过课堂规模悖论来阐述它们的用处。在悖论中,虽然学生与教师的比例约为10:1,但学生实际平均上课人数大于这个比例。通过计算和分析,发现偏倚分布的均值为29.1,高于实际均值23.7。CDF在比较和理解分布形状时特别有用,文章展示了如何使用CDF来对比第一胎和其他胎新生儿的体重分布差异。
摘要由CSDN通过智能技术生成

上个实例讲解了直方图的制作,本文讲解另一个表示分布的方法——概率质量函数(probability mass function, PMF)。概率质量函数将每个值映射到其概率,概率是频数的分数表示,样本量为n。Hist和Pmf的区别是,Hist将值映射到整型的计数值,Pmf将值映射到浮点型的概率值。

课堂规模悖论

在很多美国大学和学院里,学生与教师的比率约为10:1。但是学生们经常会惊讶地发现自己课上的平均学生数大于10.

造成这一现象的原因有两个:

  • 学生通常每学期修4到5门课,但是教授经常只教1门或2门;
  • 上小课的学生少,但上大课的学生人数非常多。

假设一所学院某学期开了65门课,选课人数分布如下:

size count
5-9 8
10-14 8
15-19 14
20-24 4
25-29 6
30-34 12
35-39 8
40-44 3
45-49 2

每门课平均选课人数为23.7,具体实现代码如下:

import ThinkStats2_PMF

d = {7: 8, 12: 8, 17: 14, 22: 4,
    27: 6, 32: 12, 37: 8, 42: 3, 47: 2}

pmf = ThinkStats2_PMF.Pmf(d, label='actual')
print('mean', pmf.Mean())

上面实现的ThinkStats2_PMF具体内容为:

import pandas
import numpy as np

from collections import Counter
import copy
import logging

class _DictWrapper(object):

    #此处代码请参考《统计思维(实例1)》
    #下面为该类新加代码
    
    def __iter__(self):
        return iter(self.d)
    
    #返回keys迭代器
    def iterkeys(self):
        return iter(self.d)

    #返回浅拷贝
    def Copy(self, label=None):
        new = copy.copy(self)
        new.d = copy.copy(self.d)
        new.label = label if label is not None else self.label
        return new

    #计算值和频率乘积
    def Mult(self, x, factor):
        self.d[x] = self.d.get(x, 0) * factor

    #返回Map中频率的总和
    def Total(self):
        total = sum(self.d.values())
        return total

#Pmf对象
class Pmf(_DictWrapper):

    def Prob(self, x, default=0):
        return self.d.get(x, default)
    
    #计算PMF的均值 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值