两台机床生产同一型号的滚珠, 从甲机床和乙机床生产的滚珠中分别抽取 8 个和 9 个, 测得滚珠直径如下 (单位: mm)
甲机床 | 15.0 | 14.8 | 15.2 | 15.4 | 14.9 | 15.1 | 15.2 | 14.8 | |
---|---|---|---|---|---|---|---|---|---|
乙机床 | 15.2 | 15.0 | 14.8 | 15.1 | 15.0 | 14.6 | 14.8 | 15.1 | 14.5 |
已知两台机床生产的滚珠的直径都服从正态分布, 试求这两台机床生产的滚珠直径均值差的区间估计, 置信度为 0.90.
- 已知甲、乙机床生产的滚珠直径的标准差分别为 = 0.18 mm 及 =0.24 mm.
- 未知, 但知 .
解
设甲、乙机床生产的滚珠直径分别为 和 , 由题意, 与 相互独立, . 经计算得
(1)
, 查表或用 软件计算的 , 用
Transclude of 1.-期望差的区间估计-(已知期望)#eq-7-3-9得到 的置信度为 0.90 的区间估计 .
(2)
, 查表或用 软件计算的 , 用
Transclude of 2.-期望差的区间估计-(未知方差-相同)#eq-7-3-10得到 的置信度为 0.90 的区间估计 .
代码
import numpy as np
from scipy.stats import norm, t
# 定义数据向量 x
x = np.array([15.0, 14.8, 15.2, 15.4, 14.9, 15.1, 15.2, 14.8])
print(f"样本数据 x: {x}")
# 定义数据向量 y
y = np.array([15.2, 15.0, 14.8, 15.1, 15.0, 14.6, 14.8, 15.1, 14.5])
print(f"样本数据 y: {y}")
# 定义已知的总体标准差 sigma1 和 sigma2
sigma1 = 0.18
sigma2 = 0.24
print(f"已知总体标准差 sigma1: {sigma1}")
print(f"已知总体标准差 sigma2: {sigma2}")
# 定义显著性水平 alpha
alpha = 0.10
print(f"显著性水平 alpha: {alpha}")
# 计算样本大小 n1 和 n2
n1 = len(x)
n2 = len(y)
print(f"样本大小 n1: {n1}")
print(f"样本大小 n2: {n2}")
# --- 第一种置信区间计算 (已知总体标准差) ---
# 计算样本均值差 z1
z1_mean_diff = np.mean(x) - np.mean(y)
print(f"样本均值差 (mean(x) - mean(y)): {z1_mean_diff:.4f}")
# 计算标准误差 z2
standard_error_known_sigma = np.sqrt(sigma1**2 / n1 + sigma2**2 / n2)
print(f"标准误差 (已知 sigma): {standard_error_known_sigma:.4f}")
# 计算正态分布的临界值
z_critical = norm.ppf(1 - alpha / 2)
print(f"正态分布临界值 (z with alpha/2): {z_critical:.4f}")
# 计算第一种置信区间
margin_of_error_known_sigma = z_critical * standard_error_known_sigma
confidence_interval_known_sigma = [z1_mean_diff - margin_of_error_known_sigma,
z1_mean_diff + margin_of_error_known_sigma]
# 输出第一种置信区间
print("\n均值差的置信区间 (90%,已知总体标准差):")
print(f" 下界: {confidence_interval_known_sigma[0]:.4f}")
print(f" 上界: {confidence_interval_known_sigma[1]:.4f}")
print(f" 表示为区间: [{confidence_interval_known_sigma[0]:.4f}, {confidence_interval_known_sigma[1]:.4f}]")
# --- 第二种置信区间计算 (未知总体标准差,假设方差相等) ---
# 计算合并方差
pooled_variance = ((n1 - 1) * np.var(x, ddof=1) + (n2 - 1) * np.var(y, ddof=1)) / (n1 + n2 - 2)
print(f"\n合并方差: {pooled_variance:.4f}")
# 计算标准误差 z3
standard_error_pooled_variance = np.sqrt((1 / n1 + 1 / n2) * pooled_variance)
print(f"标准误差 (合并方差): {standard_error_pooled_variance:.4f}")
# 计算 t 分布的临界值
degrees_of_freedom = n1 + n2 - 2
t_critical = t.ppf(1 - alpha / 2, degrees_of_freedom)
print(f"t 分布临界值 (t with alpha/2, df={degrees_of_freedom}): {t_critical:.4f}")
# 计算第二种置信区间
margin_of_error_pooled_variance = t_critical * standard_error_pooled_variance
confidence_interval_pooled_variance = [z1_mean_diff - margin_of_error_pooled_variance,
z1_mean_diff + margin_of_error_pooled_variance]
# 输出第二种置信区间
print("\n均值差的置信区间 (90%,未知总体标准差,等方差假设):")
print(f" 下界: {confidence_interval_pooled_variance[0]:.4f}")
print(f" 上界: {confidence_interval_pooled_variance[1]:.4f}")
print(f" 表示为区间: [{confidence_interval_pooled_variance[0]:.4f}, {confidence_interval_pooled_variance[1]:.4f}]")
本数据 x: [15. 14.8 15.2 15.4 14.9 15.1 15.2 14.8]
样本数据 y: [15.2 15. 14.8 15.1 15. 14.6 14.8 15.1 14.5]
已知总体标准差 sigma1: 0.18
已知总体标准差 sigma2: 0.24
显著性水平 alpha: 0.1
样本大小 n1: 8
样本大小 n2: 9
样本均值差 (mean(x) - mean(y)): 0.1500
标准误差 (已知 sigma): 0.1022
正态分布临界值 (z with alpha/2): 1.6449
均值差的置信区间 (90%,已知总体标准差):
下界: -0.0181
上界: 0.3181
表示为区间: [-0.0181, 0.3181]
合并方差: 0.0520
标准误差 (合并方差): 0.1108
t 分布临界值 (t with alpha/2, df=15): 1.7531
均值差的置信区间 (90%,未知总体标准差,等方差假设):
下界: -0.0442
上界: 0.3442
表示为区间: [-0.0442, 0.3442]