点估计与抽样分布

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jiaoyangdetian/article/details/81665161
import numpy as np

# 场景问题:一个公司中有2500个新员工,他们入职后3个月内有一部分人参加了公司的培训,现有数据为2500个员工的薪资,以及是否参加培训的状态,
# 但因为公司的数据权限,不能给出所有2500个用户的数据,但可以给出50个员工的数据,现需要推断新员工的平均薪资,以及参加培训的比例

# 知识点:
# 有限总体的简单随机抽样:在上边的例子中,新员工的总体个数是有限的,它是个有限总体,在2500个员工中,任意抽取50个员工作为抽样的样本,这50
#                      个员工都是以等可能性,即等概率的方式被抽取

salary_all = np.random.randint(low=3000, high=6000, size=2500) # 2500个员工的薪资随机生成,
training_all = np.random.randint(low=100, high=200, size=2500)
training_all = training_all % 2     #  0 未参加过培训  1 参加过培训

class SamplingDistribution(object):

    def __init__(self):

        return

    def PointEstimation(self): # 点估计

        # 简单随机抽样,抽取50个样本
        salary_sample = np.random.choice(salary_all, size=50)       # 样本薪资
        training_sample = np.random.choice(training_all, size=50)   # 样本是否参训

        salary_mean = np.mean(salary_sample)        # 点估计量,均值
        print('salary_mean=', salary_mean)          # 通过点估计值,可以推断2500个新员工的平均薪资为:salary_mean= 4443.46

        training_p = np.sum(training_sample == 1) / len(training_sample)  # 点估计量,概率值
        print('training_p=', training_p)            # 通过样本的点估计值,推断新员工中参加培训人员的比例为:training_p= 0.44

        return  salary_mean, training_p

    def SamplingDistributionSpace(self): # 抽样分布

        salary = list([])   # 每次抽样得到的薪资点估计值
        training = list([]) # 每次抽样得到的是否参训比例的点估计值

        n = 30  # 进行抽样30次
        root_n = 0
        while root_n < n:
            s, t = self.PointEstimation()
            salary.append(s)
            training.append(t)
            root_n = root_n + 1

        # 每次抽样后的结果
        print('salary=', salary)
        print('training=', training)

        # 每个抽样后得到的点估计值,可以看作一个样本,它服从正太分布,则可以求它的:均值,方差,标准差,协方差等值
        result_s = np.mean(salary)
        result_t = np.mean(training)
        print('result_s=', result_s)
        print('result_t=', result_t)

        return



SampleWork = SamplingDistribution()
SampleWork.SamplingDistributionSpace()

猜你喜欢

转载自blog.csdn.net/jiaoyangdetian/article/details/81665161