t - 分布的区间估计

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jiaoyangdetian/article/details/82424740
在只给出了n个样本数据的情况下,推测总体均值的区间估计
应用场景:给出n个家庭信用卡债务的数据,来估计美国家庭信用卡债务的总体均值
原理说明:对于任何数据集,设:均值为 x_mean, 则所有的 x_i - x_mean的平方和都等于 0, 因此(x_i - x_mean)中只有 n - 1 项是独立的,即:如果我们知道了n - 1个值,则由所有(x_i - x_mean)的值之和为 0,可以确定余下的值。
import numpy as np
from scipy import stats

global base_data

def SetBaseData():

    global base_data
    base_data = np.random.randint(low=6500, high=20000, size=600)       # 给出600个家庭信用卡借款数据

    return

def PrisionWork():

    # 置信度为:a = 0.95  自由度为 ts = n - 1,这里 n = 600,因此自由度为 509
    a = 0.95
    n = 600
    ts = n - 1

    # 进行抽样,求去样本的t分布下,均值x_mean,标准差 x_s
    mean_list = list([])
    std_list = list([])
    for j in range(300):

        data = np.random.choice(base_data, size=200)
        mean_one = np.mean(data)
        std_one = np.std(data, ddof=1)
        mean_list.append(mean_one)
        std_list.append(std_one)
        j = j + 1

    mean_list = np.array(mean_list)
    print('抽样后的均值序列:', mean_list)

    std_list = np.array(std_list)
    print('抽样后的标准差序列:', std_list)

    x_mean = np.mean(mean_list)
    x_std = np.mean(std_list)
    print('样本均值=', x_mean, '样本标准差=', x_std)

    interval = stats.t.interval(a, len(base_data), x_mean, x_std)
    print('t 分布双侧置信区间=', interval)

    # 现象:当调整置信度a时,a值越大,置信区间相对越大,a值越小,置信区间相对变小

    return

def WorkSpace():

    SetBaseData()
    PrisionWork()

    return

WorkSpace()

猜你喜欢

转载自blog.csdn.net/jiaoyangdetian/article/details/82424740
T