版权声明:本文为博主原创文章,未经博主允许不得转载。 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()