习题
习题7.1
从一批灯泡中随机地取5只作寿命试验,测得寿命(单位:h)为[1050,1100,1120,1250,1280][1050,1100,1120,1250,1280][1050,1100,1120,1250,1280],设灯泡寿命服从正态分布。求灯泡寿命平均值的置信水平为0.90的置信区间
算法设计
- 这个地方关于python的实现我还没有找到,但是在探索的过程中发现MATLAB与python的
std()
函数得到的结果不一样,是因为MATLAB默认求解样本标准差,而np.std()
默认求解总体标准差,所以需要添加参数np.std(x,ddof = 1)
才能切换为样本标准差
clc,clear
x = [1050,1100,1120,1250,1280];
n = length(x);
alpha = 0.10;
% 计算alpha/2分位数
Ta = tinv(1-alpha/2,n-1)
% 拟合正态分布参数(mu,sigma)
pd = fitdist(x,'Normal')
% ci第一列为均值置信区间,第二列为标准差置信区间
ci = paramci(pd,'Alpha',alpha)
习题7.2
某车间生产滚珠,随机地抽出了50粒,测得它们的直径为(单位:mm):
15.0 15.8 15.2 15.1 15.9 14.7 14.8 15.5 15.6 15.315.1 15.3 15.0 15.6 15.7 14.8 14.5 14.2 14.9 14.915.2 15.0 15.3 15.6 15.1 14.9 14.2 14.6 15.8 15.215.9 15.2 15.0 14.9 14.8 14.5 15.1 15.5 15.5 15.115.1 15.0 15.3 14.7 14.5 15.5 15.0 14.7 14.6 14.2
15.0\ \ 15.8\ \ 15.2\ \ 15.1\ \ 15.9\ \ 14.7\ \ 14.8\ \ 15.5\ \ 15.6\ \ 15.3\\
15.1\ \ 15.3\ \ 15.0\ \ 15.6\ \ 15.7\ \ 14.8\ \ 14.5\ \ 14.2\ \ 14.9\ \ 14.9\\
15.2\ \ 15.0\ \ 15.3\ \ 15.6\ \ 15.1\ \ 14.9\ \ 14.2\ \ 14.6\ \ 15.8\ \ 15.2\\
15.9\ \ 15.2\ \ 15.0\ \ 14.9\ \ 14.8\ \ 14.5\ \ 15.1\ \ 15.5\ \ 15.5\ \ 15.1\\
15.1\ \ 15.0\ \ 15.3\ \ 14.7\ \ 14.5\ \ 15.5\ \ 15.0\ \ 14.7\ \ 14.6\ \ 14.2\\
15.0 15.8 15.2 15.1 15.9 14.7 14.8 15.5 15.6 15.315.1 15.3 15.0 15.6 15.7 14.8 14.5 14.2 14.9 14.915.2 15.0 15.3 15.6 15.1 14.9 14.2 14.6 15.8 15.215.9 15.2 15.0 14.9 14.8 14.5 15.1 15.5 15.5 15.115.1 15.0 15.3 14.7 14.5 15.5 15.0 14.7 14.6 14.2
算法设计
- 检验假设H0H_0H0:滚珠直径X∼N(15.0780,0.43252)X \sim N(15.0780,0.4325^2)X∼N(15.0780,0.43252)
clc,clear
a = readmatrix('data7_2.txt');
x = a(:);
pd = fitdist(x,'Normal');
[h,p1,st] = chi2gof(xm,'cdf',pd,'Nparam',2)
ed = st.edges;
ed(1) = -inf;
end(end) = inf;
% 计算各个区间的概率
p2 = diff(cdf(pd,ed))
% 计算上alpha分位数
k2 = chi2inv(0.95,st.df)
习题7.3
按分位数法求灯泡寿命平均值的置信水平为0.90的Bootstrap置信区间。
算法设计
clc,clear
% 固定随机数种子
x = [1050,1100,1120,1250,1280]';
% 计算均值的置信区间
mu = bootci(10000,{@(x)mean(x),x},'alpha',0.1)
习题7.4
设有如表所列的3个组5年保险理赔的观测数据。试用方差分析法检验3个组的理赔额均值是否有显著差异(取显著性水平$ \alpha = 0.05,已知,已知,已知F_{0.05}(2,12) = 3.8853$)
t=1t = 1t=1 | t=2t = 2t=2 | t=3t = 3t=3 | t=4t = 4t=4 | t=5t = 5t=5 | |
---|---|---|---|---|---|
j=1j = 1j=1 | 98 | 93 | 103 | 92 | 110 |
j=2j = 2j=2 | 100 | 108 | 118 | 99 | 111 |
j=3j = 3j=3 | 129 | 140 | 108 | 105 | 115 |
算法设计
- 用XjtX_{jt}Xjt表示第jjj组第ttt年的理赔额,其中j=1,2,3,t=1,2,⋯ ,5j = 1,2,3,t = 1,2,\cdots,5j=1,2,3,t=1,2,⋯,5。假设所有的XjtX_{jt}Xjt相互独立且服从N(μj,σ2)N(\mu_{j},\sigma^2)N(μj,σ2)分布,即对应于每组均值mjm_{j}mj可能不相等,但是方差σ2>0\sigma^2 > 0σ2>0是相同的
- 提出原假设H0:μ1=μ2=μ3,H1:μ1,μ2,μ3H_{0}:\mu_1 = \mu_2 = \mu_3,H_1:\mu_1,\mu_2,\mu_3H0:μ1=μ2=μ3,H1:μ1,μ2,μ3不全相等
clc,clear
a = readmatrix('data7_4.txt')
[p,t,st] = anoval(a')
习题7.5
某种半成品在生产过程中的废品率yyy与它所含的某种化学成分xxx有关,现将试验所得的8组数据记录如表。试求回归方程y=a1x+a2+a3x+a4x2y = \frac{a_1}{x} + a_2 +a_3x + a_4x^2y=xa1+a2+a3x+a4x2
序号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|
xxx | 1 | 2 | 4 | 5 | 7 | 8 | 9 | 10 |
yyy | 1.3 | 1 | 0.9 | 0.81 | 0.7 | 0.6 | 0.55 | 0.4 |
算法设计
- 利用python中scipy包求解
from scipy.optimize import curve_fit
def fx(x,a1,a2,a3,a4):
return a1/x + a2 + a3 * x + a4 * x ** 2
x = [1,2,4,5,7,8,9,10]
y = [1.3,1,0.9,0.81,0.7,0.6,0.55,0.4]
popt, pcov = curve_fit(fx, x, y)
popt
输出:
array([ 0.64983455, 0.59007412, 0.06658214, -0.00912294])
习题7.6
人的身高与腿长有密切关系,现测得13名成年男子身高yyy与腿长xxx数据见表。试建立人的升高yyy和腿长xxx之间的一元线性回归模型。
xxx | 92 | 95 | 96 | 96.5 | 97 | 98 | 101 | 103.5 | 104 | 105 | 106 | 107 | 109 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
yyy | 163 | 165 | 167 | 168 | 171 | 170 | 172 | 174 | 176 | 176 | 177 | 177 | 181 |
算法设计
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
# 导入数据
a = np.loadtxt('C:/Users/lenovo/Desktop/data7_6.txt')
x = a[0,:]
y = a[1,:]
# 构建线性回归模型对象
lin_reg = LinearRegression()
# 训练
lin_reg.fit(x[:,np.newaxis],y[:,np.newaxis])
# 打印系数
print(lin_reg.coef_,lin_reg.intercept_)
print('R方:',lin_reg.score(x[:,np.newaxis],y[:,np.newaxis]))
print('RMSE:',np.sqrt(mean_squared_error(y[:,np.newaxis],lin_reg.predict(x[:,np.newaxis]))))
# 绘制图形
plt.figure(dpi = 600)
plt.plot(np.arange(1,x.shape[0]+1,1),y[:,np.newaxis] - lin_reg.predict(x[:,np.newaxis]),'+')
plt.axhline(y=0.0, c='r') # 垂直于y轴的参考线
输出:
[[0.98081454]] [73.2409963]
R方: 0.9616734761736716
RMSE: 1.0054868502483365