两台机床生产同一型号的滚珠, 从甲机床和乙机床生产的滚珠中分别抽取 8 个和 9 个, 测得滚珠直径如下 (单位: mm)

甲机床15.014.815.215.414.915.115.214.8
乙机床15.215.014.815.115.014.614.815.114.5

已知两台机床生产的滚珠的直径都服从正态分布, 试求这两台机床生产的滚珠直径均值差的区间估计, 置信度为 0.90.

  1. 已知甲、乙机床生产的滚珠直径的标准差分别为 = 0.18 mm 及 =0.24 mm.
  2. 未知, 但知 .

设甲、乙机床生产的滚珠直径分别为 , 由题意, 相互独立, . 经计算得

(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]