置信区间与置信水平

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jiaoyangdetian/article/details/82255822
# 技术场景:在总体的标准差已知的情况下,使用边际误差与区间估计,预测总体的参数
# 应用场景:现有过去1 ~ 12月的销售数据,并且每个月的销售数据的变动幅值不太大,现在有了100条当月销售数据,求取当月可能的销售额度

# 注:这里的前提条件:1 ~ 12个月的销售额度波动不算太大,我们把过去12个月的销售额度相关参数的均值,作为当月总的销售额度相关参数的值,
# 使用这些值,去做一次统计推断,推断当月销售额度可能的数值区间
import numpy as np
import copy

global sales_used
global sales_current

sales_used = list([])
sales_current = list([])

def DataBox():

    n = 12
    root_means = np.random.randint(low=240, high=270, size=13)

    # 生成过去12个月的销量,服从正态分布,且均值在 240 ~ 270 之间的数值
    for i in range(n):
        sale_month = np.random.normal(root_means[i], 4, 500)
        sale_month = sale_month.tolist()
        sales_used.append(sale_month)
        i = i + 1
    print('过去12个月的销量:', sales_used)

    # 生成当月的销售数据,服从正态分布,且均值在 240 ~ 270 之间的数值
    data_current = np.random.normal(root_means[12], 4, 100)
    sales_current.append(data_current)
    print('当月目前的销售额度:', sales_current)

    return

def SamplingWork():

    # 当月的销售数据为100条,我们以50个为一组样本,进行抽样,抽样操作为50次,求取每次的抽样后的均值,50个均值服从正态分布
    mean_list = list([])
    for i in range(50):
        data = np.random.choice(sales_current[0], size=50)
        mean_one = np.mean(data)
        mean_list.append(mean_one)
        i = i + 1

    mean_current = np.mean(mean_list)
    print('当月销售额度的抽样分布数据:', mean_list)

    return mean_current

def Recomment():

    means_used = np.mean(sales_used, axis=1)  # 过去12个月销售额度的均值
    print('过去12个月,每个月的销售额度的均值:means_used=', means_used)

    std_used = np.std(sales_used, axis=1)     # 过去12个月销售额度的标准差,过去的销售数据为标准差为std_used的正态分布
    print('过去12个月,每个月的销售标准差:', std_used)
    std_used = np.mean(std_used)
    print('std_used=', std_used)

    print('sales_current=', sales_current)
    mean_current = SamplingWork()     # 当月的销售额度的均值
    print('mean_current=', mean_current)

    std_current = std_used / np.sqrt(100)      # 因为当月的销售数据为100条,因此这里是100,当前的销售数据为标准差为std_current的正态分布
    print('std_current=', std_current)

    # 任何正态分布随机变量都有95%的值在均值附近[-1.96, +1.96]个标准差以内,因此当sales_current的抽样分布是正态分布时,则一定有95%的值
    # 在均值[u + 1.96*标准差, u - 1.96*标准差]的范围内
    # 因此这里的置信水平为0.95

    b_current = 1.96 * std_current
    left_location = mean_current - b_current
    right_location = mean_current + b_current
    print('left_location=', left_location)
    print('right_location=', right_location)

    # 通过计算,总体的均值,在置信水平为0.95的水平下,会在区间[left_location, right_location]范围内

    return

def WorkSpace():

    DataBox()
    Recomment()

    return

WorkSpace()

猜你喜欢

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