概率统计Python计算:一元线性回归应用——预测

在这里插入图片描述
一元线性回归模型,若算得参数 a a a b b b σ 2 \sigma^2 σ2的估计量 a ∧ \stackrel{\wedge}{a} a b ∧ \stackrel{\wedge}{b} b σ 2 ∧ \stackrel{\wedge}{\sigma^2} σ2。设 x = x 0 x=x_0 x=x0为一指定值,依 E ( Y 0 ) = a x 0 + b E(Y_0)=ax_0+b E(Y0)=ax0+b所得随机变量记为 Y 0 Y_0 Y0。对置信水平 1 − α 1-\alpha 1α,希望寻求统计量 Y 0 ‾ \underline{Y_0} Y0 Y 0 ‾ \overline{Y_0} Y0,使得
P ( Y 0 ‾ < Y 0 < Y 0 ‾ ) ≥ 1 − α . P(\underline{Y_0}<Y_0<\overline{Y_0})\geq1-\alpha. P(Y0<Y0<Y0)1α.
这一问题称为预测问题 ( Y 0 ‾ , Y 0 ‾ ) (\underline{Y_0},\overline{Y_0}) (Y0,Y0)称为置信水平 1 − α 1-\alpha 1α Y 0 Y_0 Y0预测区间
由于 Y 0 − a ∧ x 0 − b ∧ σ ∧ n n − 2 [ 1 + 1 n + ( x 0 − x ‾ ) 2 ∑ i = 1 n ( x i − x ‾ ) 2 ] \frac{Y_0-\stackrel{\wedge}{a}x_0-\stackrel{\wedge}{b}}{\stackrel{\wedge}{\sigma}\sqrt{\frac{n}{n-2}\left[1+\frac{1}{n}+\frac{(x_0-\overline{x})^2}{\sum\limits_{i=1}^n(x_i-\overline{x})^2}\right]}} σn2n[1+n1+i=1n(xix)2(x0x)2] Y0ax0b~ t ( n − 2 ) t(n-2) t(n2),由此可得置信水平 1 − α 1-\alpha 1α Y 0 Y_0 Y0的预测区间为
( a ∧ x 0 + b ∧ ± t α / 2 ( n − 2 ) σ ∧ n n − 2 [ 1 + 1 n + ( x 0 − x ‾ ) 2 ∑ i = 1 n ( x i − x ‾ ) 2 ] ) . \left(\stackrel{\wedge}{a}x_0+\stackrel{\wedge}{b}\pm t_ {\alpha/2}(n-2)\stackrel{\wedge}{\sigma}\sqrt{\frac{n}{n-2}\left[1+\frac{1}{n}+\frac{(x_0-\overline{x})^2}{\sum\limits_{i=1}^n(x_i-\overline{x})^2}\right]}\right). ax0+b±tα/2(n2)σn2n 1+n1+i=1n(xix)2(x0x)2 .
注意预测区间的增量因子
σ ∧ n n − 2 [ 1 + 1 n + ( x 0 − x ‾ ) 2 ∑ i = 1 n ( x i − x ‾ ) 2 ] = σ ∧ n + 1 n − 2 + n ( x 0 − x ‾ ) 2 ( n − 2 ) ∑ i = 1 n ( x i − x ‾ ) 2 = n + 1 n − 2 σ ∧ 2 + n σ ∧ 2 ( n − 2 ) ∑ i = 1 n ( x i − x ‾ ) 2 ( x 0 − x ‾ ) 2 \stackrel{\wedge}{\sigma}\sqrt{\frac{n}{n-2}\left[1+\frac{1}{n}+\frac{(x_0-\overline{x})^2}{\sum\limits_{i=1}^n(x_i-\overline{x})^2}\right]}=\stackrel{\wedge}{\sigma}\sqrt{\frac{n+1}{n-2}+\frac{n(x_0-\overline{x})^2}{(n-2)\sum\limits_{i=1}^n(x_i-\overline{x})^2}}\\ =\sqrt{\frac{n+1}{n-2}\stackrel{\wedge}{\sigma}^2+\frac{n\stackrel{\wedge}{\sigma}^2}{(n-2)\sum\limits_{i=1}^n(x_i-\overline{x})^2}(x_0-\overline{x})^2} σn2n 1+n1+i=1n(xix)2(x0x)2 =σn2n+1+(n2)i=1n(xix)2n(x0x)2 =n2n+1σ2+(n2)i=1n(xix)2nσ2(x0x)2
最后的根式内部第2项因子 n σ ∧ 2 ( n − 2 ) ∑ i = 1 n ( x i − x ‾ ) 2 \frac{n\stackrel{\wedge}{\sigma}^2}{(n-2)\sum\limits_{i=1}^n(x_i-\overline{x})^2} (n2)i=1n(xix)2nσ2恰为调用linregress函数所得返回值的stderr字段的平方。用linregress函数算得一元回归模型参数 a a a b b b σ \sigma σ的无偏估计 a ∧ \stackrel{\wedge}{a} a b ∧ \stackrel{\wedge}{b} b σ ∧ \stackrel{\wedge}{\sigma} σ,对给定的 x 0 x_0 x0及置信水平 1 − α 1-\alpha 1α,可调用muBounds函数,传递参数mean为 a ∧ x 0 + b ∧ \stackrel{\wedge}{a}x_0+\stackrel{\wedge}{b} ax0+b,d为 n + 1 n − 2 σ ∧ 2 + n σ ∧ 2 ( n − 2 ) ∑ i = 1 n ( x i − x ‾ ) 2 ( x 0 − x ‾ ) 2 \sqrt{\frac{n+1}{n-2}\stackrel{\wedge}{\sigma}^2+\frac{n\stackrel{\wedge}{\sigma}^2}{(n-2)\sum\limits_{i=1}^n(x_i-\overline{x})^2}(x_0-\overline{x})^2} n2n+1σ2+(n2)i=1n(xix)2nσ2(x0x)2 ,confidence为 1 − α 1-\alpha 1α及df为 n − 2 n-2 n2即可求得 Y 0 Y_0 Y0~ N ( a x 0 + b , σ 2 ) N(ax_0+b, \sigma^2) N(ax0+b,σ2)预测区间。
例1设炼铝厂所产铸模的抗张强度与所用铝的硬度有关。设当铝的硬度为 x x x时,抗张强度 Y Y Y~ N ( a x + b , σ 2 ) N(ax+b,\sigma^2) N(ax+b,σ2),其中 a a a b b b σ 2 \sigma^2 σ2均未知。对于一系列的 x x x值,测得相应的抗张强度如下表
硬度 x : 51 , 53 , 60 , 64 , 68 , 70 , 70 , 72 , 83 , 84 抗张强度 Y : 283 , 293 , 290 , 256 , 288 , 349 , 340 , 354 , 324 , 343 \text{硬度}x: 51,53,60,64,68,70,70,72,83,84\\ \text{抗张强度}Y: 283,293,290,256,288,349,340,354,324,343 硬度x:51,53,60,64,68,70,70,72,83,84抗张强度Y:283,293,290,256,288,349,340,354,324,343
计算对应 x 0 = 69 x_0=69 x0=69,随机变量 Y 0 Y_0 Y0~ N ( a x 0 + b , σ 2 ) N(ax_0+b,\sigma^2) N(ax0+b,σ2)的置信水平为0.95的预测区间。
解: 下列代码完成本例计算。

import numpy as np
from scipy.stats import linregress
x=np.array([51, 53, 60, 64, 68, 70, 70, 72, 83, 84])			#样本数据
y=np.array([283, 293, 290, 286, 288, 349, 340, 354, 324, 343])
alpha=0.05														#显著水平
x0=69															#硬度水平
n=x.size														#样本容量
x_bar=x.mean()													#x的均值
lxx=((x-x_bar)**2).sum()										#x的平方和
res=linregress(x, y)											#计算一元回归
a=res.slope														#a的无偏估计
b=res.intercept													#b的无偏估计
s=res.stderr*np.sqrt((n-2)*lxx/n)								#sigma的最大似然估计
d=np.sqrt((n+1)/(n-2)*s**2+((x0-x_bar)*res.stderr)**2)			#预测区间增量因子
mean=ax0+b														#预测区间中心
confidence=1-alpha												#置信水平
(l, r)=muBounds(mean, d, confidence, df=n-2)					#Y0的预测区间
print('(%.3f, %.3f)'%(l,r))

第3~5行按题面设置各项数据。第6行计算样本容量为n,第7行计算 x x x的均值 x ‾ \overline{x} x为x_bar,第8行计算 ∑ i = 1 n ( x i − x ‾ ) 2 \sum\limits_{i=1}^n(x_i-\overline{x})^2 i=1n(xix)2为lxx。第9行调用linregress,计算一元回归分析。第10、11和12行分别读取 a a a b b b σ \sigma σ的点估计值 a ∧ \stackrel{\wedge}{a} a b ∧ \stackrel{\wedge}{b} b σ ∧ \stackrel{\wedge}{\sigma} σ为a,b和s。第13行计算预测区间的增量因子 n + 1 n − 2 σ ∧ 2 + n σ ∧ 2 ( n − 2 ) ∑ i = 1 n ( x i − x ‾ ) 2 ( x 0 − x ‾ ) 2 \sqrt{\frac{n+1}{n-2}\stackrel{\wedge}{\sigma}^2+\frac{n\stackrel{\wedge}{\sigma}^2}{(n-2)\sum\limits_{i=1}^n(x_i-\overline{x})^2}(x_0-\overline{x})^2} n2n+1σ2+(n2)i=1n(xix)2nσ2(x0x)2 为d。第14行计算 a ∧ x 0 + b ∧ \stackrel{\wedge}{a}x_0+\stackrel{\wedge}{b} ax0+b为mean。第15行计算 1 − α 1-\alpha 1α为confidence。第17行调用函数muBounds,计算 Y 0 Y_0 Y0的预测区间。运行程序,输出

(263.342, 372.259)

即对应硬度 x 0 = 69 x_0=69 x0=69,以0.95的置信水平预测抗张强度 Y 0 ∈ ( 263.342 , 372.259 ) Y_0\in(263.342, 372.259) Y0(263.342,372.259)
写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
代码诚可贵,原理价更高。若为AI学,读正版书好
返回《导引》

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值