母体平均数的信赖区间估计意义 (25分)
Q3-1: 执行程序码产生由两个常态分配组成的 1000 个随机数的整数资料 data, 印出 data 的平均数和标准差并储存至 mu, std
Q3-2: 从 data 随机抽取 50 笔资料,决定信心水平 ( 1- alpha ) 并计算此抽样结果的区间估计上下限
Q3-3: 利用 Q3-2 的程序码, 执行 200 次抽样, 并储存每次抽样的区间估计范围
Q3-4: 判断计算 Q3-1 的 mu 有多少比例落在 Q3-3 的 200 个区间估计范围
Q3-5: 比较 Q3-4 和 Q3-2 的 信心水平 (印出两者结果即可)
(可以调整 alpha, n 并多执行几次 Q3-2 ~ Q3-5 感受信赖区间概念)
要怎么写程序呀?
求助大神
为了解决这个的问题,可以根据这些示例代码来编写代码。
首先,您可以使用 NumPy 库生成由两个正态分布组成的 1000 个随机数据,并计算数据的平均数和标准差。下面是示例代码:
import numpy as np
# 生成 1000 个随机数据
data = np.concatenate((np.random.normal(0, 1, 500), np.random.normal(5, 2, 500)))
# 计算数据的平均数和标准差
mu = np.mean(data)
std = np.std(data)
print(mu, std)
然后,您可以使用 NumPy 的 random.choice 函数从数据中随机抽取 50 笔数据,并使用 t 分布计算该抽样的区间估计的上下限。下面是示例代码:
import numpy as np
from scipy.stats import t
# 从数据中随机抽取 50 笔数据
sample = np.random.choice(data, 50)
# 计算信心水平为 95% 的区间估计的上下限
n = len(sample)
alpha = 0.05
df = n - 1
t_alpha = t.ppf(1 - alpha / 2, df)
# 计算样本的平均数和标准差
sample_mean = np.mean(sample)
sample_std = np.std(sample, ddof=1)
# 计算区间估计的上下限
lower = sample_mean - t_alpha * sample_std / np.sqrt(n)
upper = sample_mean + t_alpha * sample_std / np.sqrt(n)
print(lower, upper)
最后,您可以使用一个循环将上述代码执行 200 次,并记录下每次抽样的区间估计范围。您可以使用列表来存储这些区间估计范围,然后使用列表推导式来计算有多少个区间估计范围包含了数据的平均数。下面是示例代码:
import numpy as np
from scipy.stats import t
# 生成 1000 个随机数据
data = np.concatenate((np.random.normal(0, 1, 500), np.random.normal(5, 2, 500)))
# 计算数据的平均数
mu = np.mean(data)
# 存储每次抽样的区间估计范围
intervals = []
for i in range(200):
# 从数据中随机抽取 50 笔数据
sample = np.random.choice(data, 50)
# 计算信心水平为 95% 的区间估计的上下限
n = len(sample)
alpha = 0.05
df = n - 1
t_alpha = t.ppf(1 - alpha / 2, df)
# 计算样本的平均数和标准差
sample_mean = np.mean(sample)
sample_std = np.std(sample, ddof=1)
# 计算区间估计的上下限
lower = sample_mean - t_alpha * sample_std / np.sqrt(n)
upper = sample_mean + t_alpha * sample_std / np.sqrt(n)
# 将区间估计范围添加到列表中
intervals.append((lower, upper))
# 计算有多少个区间估计范围包含了数据的平均数
count = sum([1 for lower, upper in intervals if lower <= mu <= upper])
print(count)