假设检验回归分析与方差分析2
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
假设检验、回归分析与方差分析
实验1 假设检验
实验目的 掌握用Mathematica 作单正态总体均值、方差的假设检验, 双正态总体的均值差、方差比的假设检验方法, 了解用Mathematica 作分布拟合函数检验的方法.
基本命令
1.调用假设检验软件包的命令<<Statistics\HypothesisTests.m 输入并执行命令
<<Statistics\HypothesisTests.m 2.检验单正态总体均值的命令MeanTest 命令的基本格式为 MeanTest[样本观察值,0H 中均值0μ的值, TwoSided->False(或True),
Known Variance->None (或方差的已知值2
0σ),
SignificanceLevel->检验的显著性水平α,FullReport->True]
该命令无论对总体的均值是已知还是未知的情形均适用.
命令MeanTest 有几个重要的选项. 选项Twosided->False 缺省时作单边检验. 选项Known
Variance->None 时为方差未知, 所作的检验为t 检验. 选项Known Variance->20σ时为方差已知(2
0σ是已知方
差的值), 所作的检验为u 检验. 选项Known Variance->None 缺省时作方差未知的假设检验. 选项SignificanceLevel->0.05表示选定检验的水平为0.05. 选项FullReport->True 表示全面报告检验结果.
3.检验双正态总体均值差的命令MeanDifferenceTest 命令的基本格式为
MeanDifferenceTest[样本1的观察值,样本2的观察值,
0H 中的均值21μμ-,选项1,选项2,…]
其中选项TwoSided->False(或True), SignificanceLevel->检验的显著性水平α,
FullReport->True 的用法同命令MeanTest 中的用法. 选项EqualVariances->False(或True)表示两个正态总体的方差不相等(或相等).
4.检验单正态总体方差的命令VarianceTest 命令的基本格式为
VarianceTest[样本观察值,0H 中的方差2
0σ的值,选项1,选项2,…]
该命令的选项与命令MeanTest 中的选项相同.
5.检验双正态总体方差比的命令VarianceRatioTest
命令的基本格式为
VarianceRatioTest[样本1的观察值,样本2的观察值,
0H 中方差比
22
2
1σσ的值,选项1,选项2,…] 该命令的选项也与命令MeanTest 中的选项相同.
注: 在使用上述几个假设检验命令的输出报告中会遇到像OneSidedPValue->
0.000217593这样的项,它报告了单边检验的P 值为0.000217593. P 值的定义是: 在原假设成立的条件下, 检验统计量取其观察值及比观察值更极端的值(沿着对立假设方向)的概率. P 值也称作“观察”到的显著性水平. P 值越小, 反对原假设的证据越强. 通常若P 低于5%, 称此结果为统计显著; 若P 低于1%,称此结果为高度显著.
6.当数据为概括数据时的假设检验命令
当数据为概括数据时, 要根据假设检验的理论, 计算统计量的观察值, 再查表作出结论. 用以下命令可
以代替查表与计算, 直接计算得到检验结果.
(1)统计量服从正态分布时, 求正态分布P 值的命令NormalPValue. 其格式为 NormalPValue[统计量观察值,显著性选项,单边或双边检验选项] (2)统计量服从t 分布时, 求t 分布P 值的命令StudentTPValue. 其格式为 StudentTPValue[统计量观察值,自由度,显著性选项,单边或双边检验选项] (3)统计量服从2χ分布时, 求2χ分布P 值的命令ChiSquarePValue. 其格式为
ChiSquarePValue[统计量观察值,自由度,显著性选项,单边或双边检验选项] (4)统计量服从F 分布时, 求F 分布P 值的命令FratioPValue. 其格式为
FratioPValue[统计量观察值,分子自由度,分母自由度,显著性选项,单边或双边检验选项] (5)报告检验结果的命令ResultOfTest. 其格式为
ResultOfTest[P 值,显著性选项,单边或双边检验选项,FullReport->True] 注:上述命令中, 缺省默认的显著性水平都是0.05, 默认的检验都是单边检验.
实验举例
单正态总体均值的假设检验(方差已知情形)
例 1.1 (教材 例 1.1) 某车间生产钢丝, 用X 表示钢丝的折断力, 由经验判断),(~2σμN X , 其中
228,570==σμ, 今换了一批材料, 从性能上看, 估计折断力的方差2σ不会有什么变化(即仍有228=σ), 但不知折断力的均值μ和原先有无差别. 现抽得样本, 测得其折断力为
578 572 570 568 572 570 570 572 596 584
取,05.0=α试检验折断力均值有无变化?
根据题意, 要对均值作双侧假设检验
570:,
570:10≠=μμH H
输入 <<Statistics\HypothesisTests.m
执行后, 再输入
data1={578,572,570,568,572,570,570,572,596,584}; MeanTest[data1,570,SignificanceLevel->0.05,
KnownVariance->64,TwoSided->True,FullReport->True] (*检验均值, 显著性水平05.0=α, 方差083.02=σ已知*)
则输出结果
{FullReport-> Mean TestStat
Distribution
575.2
2.05548 NormalDistribution[]
TwoSidedPValue->0.0398326,
Reject null hypothesis at significance level ->0.05}
即结果给出检验报告: 样本均值2.575=x , 所用的检验统计量为u 统计量(正态分布),检验统计量的观测值为2.05548, 双侧检验的P 值为0.0398326, 在显著性水平05.0=α下, 拒绝原假设, 即认为折断力的均值发生了变化.
例1.2 (教材 例1.2) 有一工厂生产一种灯管, 已知灯管的寿命X 服从正态分布)40000,(μN , 根据以往的生产经验, 知道灯管的平均寿命不会超过1500小时. 为了提高灯管的平均寿命, 工厂采用了新的工艺. 为了弄清楚新工艺是否真的能提高灯管的平均寿命,他们测试了采用新工艺生产的25只灯管的寿命. 其平均值是1575小时, 尽管样本的平均值大于1500小时, 试问: 可否由此判定这恰是新工艺的效应, 而非偶然的原因使得抽出的这25只灯管的平均寿命较长呢? 根据题意, 需对均值的作单侧假设检验
1500:,
1500:10>≤μμH H
检验的统计量为 n
X U /0
σμ-=, 输入
p1=NormalPValue[(1575-1500)/200*Sqrt[25]]
ResultOfTest[p1[[2]],SignificanceLevel ->0.05,FullReport ->True]
执行后的输出结果为
OneSidedPValue ->0.0303964 {OneSidedPValue->0.0303964,
Fail to reject null hypothesis at significance level ->0.05}
即输出结果拒绝原假设
单正态总体均值的假设检验(方差未知情形)
例1.3 (教材 例1.3) 水泥厂用自动包装机包装水泥, 每袋额定重量是50kg, 某日开工后随机抽查了9袋, 称得重量如下:
49.6 49.3 50.1 50.0 49.2 49.9 49.8 51.0 50.2
设每袋重量服从正态分布, 问包装机工作是否正常(05.0=α)? 根据题意, 要对均值作双侧假设检验: 50:;50:10≠=μμH H
输入
data2={49.6,49.3,50.1,50.0,49.2,49.9,49.8,51.0,50.2};
MeanTest[data2,50.0,SignificanceLevel ->0.05,FullReport ->True]
(*单边检验且未知方差,故选项TwoSided,KnownVariance 均采用缺省值*)
执行后的输出结果为
{FullReport->
Mean TestStat Distribution,
49.9 -0.559503 StudentTDistribution[8] OneSidedPValue ->0.295567,
Fail to reject null hypothesis at significance level ->0.05}
即结果给出检验报告: 样本均值9.49=X , 所用的检验统计量为自由度8的t 分布(t 检验),检验统计量的观测值为-0.559503, 双侧检验的P 值为0.295567, 在显著性水平05.0=α下, 不拒绝原假设, 即认为包装机工作正常. 例1.4 (教材 例1.4) 从一批零件中任取100件,测其直径,得平均直径为5.2,标准差为1.6.在显著性水平05.0=α下,判定这批零件的直径是否符合5的标准.
根据题意, 要对均值作假设检验:
.5:;5:10≠=μμH H
检验的统计量为n
s X T /0μ-=, 它服从自由度为1-n 的t 分布. 已知样本容量,100=n 样本均值2.5=X , 样
本标准差6.1=s .
输入
StudentTPValue[(5.2-5)/1.6*Sqrt[100],100-1, TwoSided->True]
则输出 TwoSidedPValue->0.214246
即P 值等于0.214246, 大于0.05, 故不拒绝原假设, 认为这批零件的直径符合5的标准.
单正态总体的方差的假设检验
例1.5 (教材 例1.5) 某工厂生产金属丝, 产品指标为折断力. 折断力的方差被用作工厂生产精度的表征. 方差越小, 表明精度越高. 以往工厂一直把该方差保持在64(kg 2)与64以下. 最近从一批产品中抽取10根作折断力试验, 测得的结果(单位为千克) 如下:
578 572 570 568 572 570 572 596 584 570
由上述样本数据算得74.75,2.5752==s x .
为此, 厂方怀疑金属丝折断力的方差是否变大了. 如确实增大了, 表明生产精度不如以前, 就需对生产流程作一番检验, 以发现生产环节中存在的问题. 根据题意, 要对方差作双边假设检验:
64:;
64:2120>≤σσH H
输入
data3={578,572,570,568,572,570,572,596,584,570};
VarianceTest[data3,64,SignificanceLevel->0.05,FullReport->True]
(*方差检验,使用双边检验,05.0=α*)
则输出
{FullReport->
Variance TestStat Distribution
75.7333 10.65 ChiSquareDistribution[9] OneSidedPValue->0.300464,
Fail to reject null hypothesis at significance level->0.05}
即检验报告给出: 样本方差,7333.752=s 所用检验统计量为自由度4的2χ分布统计量(2χ 检验), 检验统计量的观测值为10.65, 双边检验的P 值为0.300464, 在显著性水平05.0=α 时, 接受原假设, 即认为样本方差的偏大系偶然因素, 生产流程正常, 故不需再作进一步的 检查.
例1.6 (教材 例1.6) 某厂生产的某种型号的电池, 其寿命(以小时计) 长期以来服从方差50002=σ的正态分布, 现有一批这种电池, 从它的生产情况来看, 寿命的波动性有所改变. 现随机取26只电池, 测出其寿命的样本方差92002=s .问根据这一数据能否推断这批电池的寿命的波动性较以往的有显著的变化(取
02.0=α)?
根据题意, 要对方差作双边假设检验:
5000:;
5000:2120≠=σσH H
所用的检验统计量为,)1(2
2
2
σχS n -=
它服从自由度为1-n 的2χ分布.已知样本容量,26=n 样本方差
.92002=s
输入 ChiSquarePValue[(26-1)*9200/5000, 26-1,TwoSided->True] 则输出 TwoSidedPValue->0.0128357.
即P 值小于0.05, 故拒绝原假设. 认为这批电池寿命的波动性较以往有显著的变化.
双正态总体均值差的检验(方差未知但相等)
例1.7 (教材 例1.7) 某地某年高考后随机抽得15名男生、12名女生的物理考试成绩如下: 男生: 49 48 47 53 51 43 39 57 56 46 42 44 55 44 40 女生: 46 40 47 51 43 36 43 38 48 54 48 34
从这27名学生的成绩能说明这个地区男女生的物理考试成绩不相上下吗?(显著性水平05.0=α). 根据题意, 要对均值差作单边假设检验:
211210:,:μμμμ≠=H H 输入
data4={49.0,48,47,53,51,43,39,57,56,46,42,44,55,44,40}; data5={46,40,47,51,43,36,43,38,48,54,48,34};
MeanDifferenceTest[data4,data5,0,SignificanceLevel->0.05,
TwoSided->True,FullReport->True,EqualVariances->True,FullReport->True]
(*指定显著性水平05.0=α,且方差相等*) 则输出
{FullReport->
MeanDiff TestStat Distribution
3.6 1.56528 tudentTDistribution[25], OneSidedPValue->0.13009,
Fail to reject null hypothesis at significance level->0.05}
即检验报告给出: 两个正态总体的均值差为3.6, 检验统计量为自由度25的t 分布(t 检验),检验统计量的观察值为1.56528, 单边检验的P 值为0.13009, 从而没有充分理由否认原假 设, 即认为这一地区男女生的物理考试成绩不相上下.
双正态总体方差比的假设检验
例1.8 (教材 例1.8) 为比较甲、乙两种安眠药的疗效, 将20名患者分成两组, 每组10人, 如服药后延长的睡眠时间分别服从正态分布, 其数据为(单位:小时):
甲: 5.5 4.6 4.4 3.4 1.9 1.6 1.1 0.8 0.1 -0.1 乙: 3.7 3.4 2.0 2.0 0.8 0.7 0 -0.1 -0.2 -1.6 问在显著性水平05.0=α下两重要的疗效又无显著差别.
根据题意, 先在21,μμ未知的条件下检验假设:
2
2
2112
2210:,:σσσσ≠=H H 输入
list1={5.5,4.6,4.4,3.4,1.9,1.6,1.1,0.8,0.1,-0.1}; list2={3.7,3.4,2.0,2.0,0.8,0.7,0,-0.1,-0.2,-1.6}; VarianceRatioTest[list1,list2,1,SignificanceLevel->0.05,
TwoSided->True,FullReport->True]
(*方差比检验,使用双边检验,05.0=α*) 则输出
{FullReport->
Ratio TestStat Distribution
1.41267 1.41267 FratioDistribution[9,9], TwoSidedPValue->0.615073,
Fail to reject null hypothesis at significancelevel->0.05}
即检验报告给出: 两个正态总体的样本方差之比
22
21s s 为 1.41267, 检验统计量的分布为)9,9(F 分布(F 检验),
检验统计量的观察值为1.41267, 双侧检验的P 值为0.615073. 由检验报告知两总体方差相等的假设成立. 其次, 要在方差相等的条件下作均值是否相等的假设检验: 211
210
:,:μμμμ≠'='H H
输入
MeanDifferenceTest[list1,list2,0,EqualVariances->True,
SignificanceLevel->0.05,TwoSided->True,FullReport->True]
(*均值差是否为零的检验,已知方差相等,05.0=α,双边检验*)
则输出
{FullReport->
MeanDiff TestStat Distribution
1.26 1.52273 StudentTDistribution[18], TwoSidedPValue->0.1452,
Fail to reject null hypothesis at significance level->0.05}
根据输出的检验报告, 应接受原假设,:210
μμ='H 因此, 在显著性水平05.0=α下可认为21μμ=. 综合上述讨论结果, 可以认为两种安眠药疗效无显著差异.
例1.9 (教材 例1.9) 甲、乙两厂生产同一种电阻, 现从甲乙两厂的产品中分别随机抽取12个和10个样
品, 测得它们的电阻值后, 计算出样本方差分别为,40.121=s .38.42
2=s 假设电阻值服从正态分布, 在显著
性水平10.0=ε下, 我们是否可以认为两厂生产的电阻值的方差相等.
根据题意, 检验统计量为,2
221S S F =它服从自由度(1,121--n n )的F 分布.已知样本容量10,1221==n n , 样本方差.38.4,40.12
221==s s 该问题即检验假设:
2
2
2112
2210:,
:σσσσ≠=H H 输入
FRatioPValue[1.40/4.38,12-1,10-1,TwoSided->True,SignificanceLevel->0.1]
则输出
TwoSidedPValue->0.0785523,
Reject null hypothesis at significance level->0.1}
所以, 我们拒绝原假设, 即认为两厂生产的电阻阻值的方差不同 分布拟合检验——2χ检验法 例1.10 (教材 例1.10) 下面列出84个伊特拉斯坎男子头颅的最大宽度(单位:mm):
141 148 132 138 154 142 150 146 155 158 150 140 147 148 144 150 149 145 149 158 143 141 144 144 126 140 144 142 141 140 145 135 147 146 141 136 140 146 142 137 148 154 137 139 143 140 131 143 141 149 148 135 148 152 143 144 141 143 147 146 150 132 142 142 143 153 149 146 149 138 142 149 142 137 134 144 146 147 140 142 140 137 152 145
试检验上述头颅的最大宽度数据是否来自正态总体(1.0=α)?
输入数据
data2={141,148,132,138,154,142,150,146,155,158,150,140, 147,148, 144,150,149,145,149,158,143,141,144,144,126,140, 144,142,141,140, 145,135,147,146,141,136,140,146,142,137, 148,154,137,139,143,140, 131,143,141,149,148,135,148,152, 143,144,141,143,147,146,150,132, 142,142,143,153,149,146, 149,138,142,149,142,137,134,144,146,147, 140,142,140,137,152,145}; 输入 Min[data2]|Max[data2] 则输出
126|158
即头颅宽度数据的最小值为126, 最大值为158. 考虑区间[124.5,159.5], 它包括了所有的数据. 以5为间隔, 划分小区间. 计算落入每个小区间的频数, 输入 pshu=BinCounts[data2,{124.5,159.5,5}] 则输出
{1,4,10,33,24,9,3}
因为出现了两个区间内的频数小于5, 所以要合并小区间. 现在把频数为1, 4的两个区间合并, 再把频数为
9, 3的两个区间合并. 这样只有5个小区间. 这些区间为
(5.134,-∞),),,5.154(,],5.139,5.134(+∞
为了计算分布函数在端点的值, 输入 zu=Table[129.5+j*5,{j,1,4}] 则输出
{134.5,139.5,144.5,149.5}
以这4个数为分点,把),(+∞-∞分成5个区间后,落入5个小区间的频数分别为5, 10, 33, 24, 12.它们除以数据的总个数就得到频率. 输入
plv={5,10,33,24,12}/Length[data2]
则输出
⎭
⎬⎫⎩⎨⎧71,72,2811,425,845 下面计算在0H 成立条件下, 数据落入5个小区间的概率. 输入
nor=NormalDistribution[Mean[data2],StandardDeviationMLE[data2]]; (*Mean[data2]是总体均值的极大似然估计,
StandardDeviationMLE[data2]是总体标准差的极大似然估计, NormalDistribution 是正态分布,
因此nor 是由极大似然估计得到的正态分布*) Fhat=CDF[nor,zu] (*CDF 是分布函数的值*)
则输出 {0.0590736,0.235726,0.548693,0.832687}
此即0H 成立条件下分布函数在分点的值. 再求相邻两个端点的分布函数值之差, 输入 Fhat2=Join[{0},Fhat,{1}];
glv=Table[Fhat2[[j]]-Fhat2[[j-1]],{j,2,Length[Fhat2]}]
则输出 {0.0590736,0.176652,0.312967,0.283994,0.167313} 输入计算检验统计量2χ值的命令 chi=Apply[Plus,(plv-glv)^2/glv*Length[data2]] 则输出 3.59235
再输入求2χ分布的P 值命令
ChiSquarePValue[chi,2] (*5-2-1=2为2χ分布的自由度*) 则输出 OneSidedPValue->0.165932
这个结果表明0H 成立条件下, 统计量2χ取3.59235及比它更大的概率为0.165932, 因此不拒绝0H , 即头颅的最大宽度数据服从正态分布.
实验习题
1.设某种电子元件的寿命X (单位:h)服从正态分布22,),,(σμσμN 均未知. 现测得16只元件的寿命如
下: 159 280 101 212 224 379 179 264 222 362 168 250 149 260 485 170
问是否有理由认为元件的平均寿命225h?是否有理由认为这种元件寿命的方差≤852? 2.某化肥厂采用自动流水生产线,装袋记录表明,实际包重)2,100(~2N X ,打包机必须定期进行检查,确定机器是否需要调整,以确保所打的包不至过轻或过重,现随机抽取9包, 测得数据(单位:kg)如下
102 100 105 103 98 99 100 97 105
若要求完好率为95%,问机器是否需要调整?
3.某炼铁厂的铁水的含碳量X 在正常情况下服从正态分布.现对操作工艺进行了某些改进,从中抽取5炉铁水测得含碳量百分比的数据如下
4.421 4.052 4.357 4.287 4.683
据此是否可以认为新工艺炼出的铁水含碳量的方差仍为?)05.0(108.02=α
4.机器包装食盐,假设每袋盐的净重服从正态分布,规定每袋标准重量为500g,标准差不能超过0.02.某天开工后,为检验机械工作是否正常,从装好的食盐中随机地抽取9袋,则其净重(单位:500g)为
0.994 1.014 1.02 0.95 0.968 0.968 1.048 0.982 1.03
问这天包装机工作是否正常(05.0=α)?
5.(1)某切割机在正常工作时,切割每段金属棒的平均长度为10.5cm.今从一批产品中随机地抽取15段,测得其长度(单位:cm)如下
10.4 10.6 10.1 10.4 10.5 10.3 10.3 10.2
10.9 10.6 10.8 10.5 10.7 10.2 10.7
设金属棒长度服从正态分布,且标准差没有变化,试问该机工作是否正常(05.0=α)?
(2)上题中假定切割的长度服从正态分布,问该机切割的金属棒的平均长度有无显著变化(05.0=α)?
(3)如果只假定切割的长度服从正态分布,问该机切割的金属棒长度的标准差有无显著变化(05.0=α)? 6. 在平炉上进行一项试验以确定改变操作方法的建议是否会增加钢的得率,试验是在同一平炉进行的, 每炼一炉钢时除操作方法外, 其他方法都尽可能做到相同.先用标准方法炼一炉, 然后用建议的新方法炼一炉, 以后交替进行, 各炼了10炉, 其得率分别为
(1) 标准方法 78.1 72.4 76.2 74.3 77.4 78.4 76.0 75.5 76.7 77.3 (2) 新 方 法 79.1 81.0 77.3 79.1 80.0 79.1 79.1 77.3 80.2 82.1
设这两个样本相互独立, 且分别来自正态总体),(21σμN 和),(22σμN ,21,μμ和2σ均未知.问建议的新操作方法能否提高得率(05.0=α).
7.某自动机床加工同一种类型的零件.现从甲、乙两班加工的零件中各抽验了5各,测得它们的直径(单位:cm)分别为 甲: 2.066 2.063 2.068 2.060 2.067 乙: 2.058 2.057 2.063 2.059 2.060 已知甲、乙二车床加工的零件其直径分别为),(~),,(~2221σμσμN Y N X ,试根据抽样结果来说明两车床加工的零件的平均直径有无显著性差异(05.0=α)? 8.设某产品的使用寿命近似服从正态分布,要求平均使用寿命不低于1000h.现从一批产品中任取25只, 测得平均使用寿命为950h,样本方差为100, 在05.0=α下,检验这批产品是否合格.
9. 两台机器生产某种部件的重量近似服从正态分布.分别抽取60与30个部件进行检测,样本方差分别
为.66.9,46.152221
==s s 试在05.0=α下检验假设 .:;:2
221122210σσσσ>=H H
10.设某电子元件的可靠性指标服从正态分布,合格标准之一为标准差.05.00=σ现检测15次,测得指标的平均值95.0=x ,指标的标准差.03.0=s 试在1.0=α下检验假设
.05.0:;05.0:221220≠=σσH H
11.对两种香烟中尼古丁含量进行6次测试,得到样本均值与样本方差分别为
22.9,25.6,67.25,5.252
221
====s s y x 设尼古丁含量都近似服从正态分布,且方差相等.取显著性水平,05.0=α检验香烟中尼古丁含量的方差有无
显著差异.
实验2 回归分析
实验目的 学习利用Mathematica 求解一元线性回归问题. 学会正确使用命令线性回归Regress, 并从输出表中读懂线性回归模型中各参数的估计, 回归方程, 线性假设的显著性检验结果, 因变量Y 在预察点0x 的预测区间等.
基本命令
1.调用线性回归软件包的命令<<Statistics\LinearRegression.m 输入并执行调用线性回归软件包的命令
<<Statistics\LinearRegression.m
或调用整个统计软件包的命令
<<Statistics`
2.线性回归的命令Regress
一元和多元线性回归的命令都是Regress. 其格式是
Regress[数据, 回归函数的简略形式, 自变量,
RegressionReport(回归报告)->{选项1,选项2,选项3,…}]
注: 回归报告中包含BestFit(最佳拟合,即回归函数), ParameterCITable(参数的置信区间表), PredictedResponse(因变量的预测值), SinglePredictionCITable(因变量的预测区间), FitResiduals(拟合的残差), SummaryReport(总结性报告)等.
3.抹平“集合的集合”的命令Flatten
命令Flatten[A]将集合的集合A 抹平为只有一个层次的集合. 例如, 输入
Flatten[{{1,2,3},{1,{3}}}]
则输出
{1,2,3,1,3}.
4.非线性拟合的命令NonlinearFit 使用的基本格式为
NonlinearFit [数据, 拟合函数, (拟合函数中的)变量集, (拟合函数中的)参数, 选项] 注: 拟合函数中既有变量又有参数, 变量的个数要与数据的形式相应. 参数集中往往需 要给出各参数的初值. 选项的内容主要是指定拟合算法、迭代次数和精度.
实验举例
例2.1 (教材 例2.1) 某建材实验室做陶粒混凝土实验室中, 考察每立方米)(3m 混凝土的水泥用量(kg)对混凝土抗压强度)/(2cm kg 的影响, 测得下列数据:
7
.894
.866
.822
.804
.771
.742602502402302202103.711.686.646.613.589.56200190180170160150y
x y x 抗压强度水泥用量抗压强度水泥用量
(1) 画出散点图;
(2) 求y 关于x 的线性回归方程,ˆˆˆx b a y
+=并作回归分析; (3) 设2250=x kg, 求y 的预测值及置信水平为0.95的预测区间.
先输入数据:
aa = {{150,56.9},{160,58.3},{170,61.6},{180,64.6},{190,68.1},{200,71.3},
{210,74.1},{220,77.4},{230,80.2},{240,82.6},{250,86.4},{260,89.7}};
(1) 作出数据表的散点图. 输入
ListPlot[aa,PlotRange->{{140,270},{50,90}}]
则输出图2.1.
图2.1
(2) 作一元回归分析, 输入
Regress[aa,{1,x},x,RegressionReport->{BestFit,
ParameterCITable,SummaryReport}]
则输出
{BestFit->10.2829+0.303986x, ParameterCITable->
Estimate SE CI 1 10.2829 0.850375 {8.388111,12.1776}, x 0.303986 0.00409058 {0.294872,0.3131} ParameterTable->
Esimate SE Tstat PValue 1
10.2829
0.850375
12.0922
2.718527
10
-⨯,
x 0.303986 0.00409058 74.3137 4.8849815
10-⨯ Rsquared->0.998193,AdjustedRSquared->0.998012, EstimatedVariance->0.0407025,ANOV A Table->
DF SumOfSq MeanSq Fratio PValue Model
1 1321.43 1321.43
5522.52
4.7739615
10
-⨯
Error 10 2.3928 0.23928
Total
11 1323.82
现对上述回归分析报告说明如下:
BestFit(最优拟合)-> 10.2829+0.303986x 表示一元回归方程为
x y 303986.02829.10+=;
ParameterCITable(参数置信区间表)中: Estimate 这一列表示回归函数中参数a , b 的点估计为a
ˆ=10.2829 (第一行), b
ˆ= 0.303986 (第二行); SE 这一列的第一行表示估计量a ˆ的标准差为0.850375, 第二行表示估计量b
ˆ的标准差为0.00409058; CI 这一列分别表示a ˆ的置信水平为0.95的置信区间是(8.388111,12.1776), b ˆ的置信水平为0.95的置信区间是
(0.294872,0.3131).
ParameterTable(参数表)中前两列的意义同参数置信区间表; Tstat 与Pvalue 这两列的第一行表示作假设检验(t 检验):0:,0:10≠=a H a H 时, T 统计量的观察值为12.0922, 检验统计量的P 值为2.71852710-⨯, 这
个P 值非常小, 检验结果强烈地否定0:0=a H , 接受0:1≠a H ; 第二行表示作假设检验(t 检验): ,0:0=b H 0:1≠b H 时T 统计量的观察值为74.3137, 检验统计量的P 值为4.884981510-⨯, 这个P 值也非常
小, 检验结果强烈地否定,0:0=b H 接受0:1≠b H .
Rsquared->0.998193, 表示.998193.0)
()
(2==
总平方和回归平方和SST SSR R 它说明y 的变化有99.8%来自x 的变化;
AdjustedRSquared->0.998012, 表示修正后的=2~
R 0.998012.
EstimatedVariance->0.0407025, 表示线性模型),0(~,2σεεN bx a y ++=中方差2σ的估计为0.0407025. ANOV A Table(回归方差分析表)中的DF 这一列为自由度: Model(一元线性回归模型)的自由度为1, Error(残差)的自由度为,102=-n Total(总的)自由度为.111=-n
SumOfSq 这一列为平方和: 回归平方和=SSR 1321.43, 残差平方和=SSE 2.3928,总的平方和
=+=SSE SSR SST 1323.82;
MeanSq 这一列是平方和的平均值, 由SumOfSq 这一列除以对应的DF 得到, 即
.23928.02
,43.13211=-===
n SSE
MSE SSR MSR FRatio 这一列为统计量MSE
MSR
F =
的值, 即.52.5522=F 最后一列表示统计量F 的P 值非常接近于0. 因此在作模型参数)(b =β的假设检验(F 检验):0:;0:10≠=ββH H 时, 强烈地否定0:0=βH , 即模型的参数向量.0≠β因此回归效果 非常显著.
(3) 在命令RegressionReport 的选项中增加
RegressionReport->{SinglePredictionCITable}
就可以得到在变量x 的观察点处的y 的预测值和预测区间. 虽然0.14=x 不是观察点, 但是可以用线性
插值的方法得到近似的置信区间. 输入
aa=Sort[aa]; (*对数据aa 按照水泥用量x 的大小进行排序*)
regress2=Regress[aa,{1,x},x,RegressionReport->{SinglePredictionCITable}]
(*对数据aa 作线性回归, 回归报告输出y 值的预测区间*)
执行后输出
{SinglePredictionCITable-> Observed Predicted
SE CI
56.9 55.8808 0.55663 {54.6405,57.121} 58.3 58.9206
0.541391 {57.7143,60.1269} 61.6 61.9605 0.528883 {60.7821,63.1389} 64.6 65.0003
0.519305 {63.8433,66.1574} 68.1 68.0402 0.51282 {66.8976,69.1828} 71.3 71.0801 0.509547 {69.9447,72.2154}} 74.1 74.1199 0.509547 {72.9846,75.2553} 77.4 77.1598 0.51282 {76.0172,78.3024} 80.2 80.1997 0.519305 {79.0426,81.3567} 82.6 83.2395 0.528883 {82.0611,84.4179} 86.4 86.2794 0.541391 {85.0731,87.4857} 89.7 89.3192 0.55663 {88.079,90.5595}
上表中第一列是观察到的y 的值, 第二列是y 的预测值, 第三列是标准差, 第四列是相应的预测区间(置信度为0.95). 从上表可见在)4.77(220==y x 时, y 的预测值为77.1598, 置信度为0.95的预测区间为(76.0172,75.2553), 在)2.80(230==y x 时, y 的预测值为80.1997, 置信度为0.95的预测区间为{79.0426,81.3567}. 利用线性回归方程, 可算得=0x 225时, y 的预测值为78.68, 置信度为0.95的预测区间为(77.546, 79.814).
利用上述插值思想, 可以进一步作出预测区间的图形. 先输入调用图软件包命令
<<Graphics`
执行后再输入
{observed2,predicted2,se2,ci2}
=Transpose[(SinglePredictionCITable/.regress2)[[1]]];
(*取出上面输出表中的四组数据, 分别记作observed2,predicted2,se2,ci2*) xva12=Map[First,aa];
(*取出数据aa 中的第一列, 即数据中x 的值, 记作xva12*) Predicted3=Transpose[{xva12,predicted2}];
(*把x 的值xva12与相应的预测值predicted2配成数对, 它们应该在一条回 归直线上*)
lowerCI2=Transpose[{xva12,Map[First,ci2]}];
(*Map[First,ci2]取出预测区间的第一个值, 即置信下限. x 的值xva12与相应 的置信下限配成数对*)
upperCI2=Transpose[{xva12,Map[Last,ci2]}];
(*Map[Last,ci2]取出预测区间的第二个值, 即置信上限. x 的值xva12与相应 的置信上限配成数对*)
MultipleListPlot[aa,Predicted3,lowerCI2,upperCI2,
PlotJoined->{False,True,True,True},
SymbolShape->{PlotSymbol[Diamond],None,None, None}, PlotStyle->{Automatic,Automatic,Dashing[{0.04,0.04}], Dashing[{0.04,0.04}]}]
(*把原始数据aa 和上面命令得到的三组数对predicted3,lowerCI2,upperCI2
用多重散点图命令MultipleListPlot 在同一个坐标中画出来. 图形中数据 aa 的散点图不用线段连接起来, 其余的三组散点图用线段连接起来, 而 且最后两组数据的散点图用虚线连接.*)
则输出图2.2.
图2.2
从图形中可以看到, 由Y 的预测值连接起来的实线就是回归直线. 钻石形的点是原始数 据. 虚线构成预测区间.
多元线性回归
例2.2 (教材 例2.2) 一种合金在某种添加剂的不同浓度下, 各做三次试验, 得到数据如下表:
8
.323.327.298.277.288.301.306.321.313.274.297.312.318.292.250.300.250.200.150.10Y
x 抗压强度浓度
(1) 作散点图;
(2) 以模型),0(~,22210σεεN x b x b b Y +++=拟合数据, 其中2210,,,σb b b 与x 无关;
(3) 求回归方程,ˆˆˆˆ2210x b x b b y ++=并作回归分析. 先输入数据
bb={{10.0,25.2},{10.0,27.3},{10.0,28.7},{15.0,29.8},
{15.0,31.1},{15.0,27.8},{20.0,31.2},{20.0,32.6}, {20.0,29.7},{25.0,31.7},{25.0,30.1},{25.0,32.3}, {30.0,29.4},{30.0,30.8},{30.0,32.8}};
(1) 作散点图, 输入
ListPlot[bb,PlotRange->{{5,32},{23,33}},AxesOrigin->{8,24}]
则输出图2.3.
图2.3
(2) 作二元线性回归, 输入
Regress[bb,{1,x,x^2},x,RegressionReport->{BestFit,
ParameterCITable,SummaryReport}]
(*对数据bb 作回归分析, 回归函数为,2210x b x b b ++用{1,x,x^2}表示, 自变量为x, 参数0b ,1b ,2b 的置信水平为0.95的置信区间)
执行后得到输出的结果:
{bestFit->19.0333+1.00857x-0.020381x 2, ParameterCITable->
Estimate SE CI
1
19.0333 3.27755
{11.8922,26.1745} x 1.00857 0.356431
{0.231975,1.78517}
x 2 -0.020381
0.00881488
{-0.0395869,-0.00117497}
ParameterTable->
Estimate SE Tstat PValue 1 19.0333 3.27755
5.80718 0.0000837856 x
1.00857
0.356431 2.82964
0.0151859 x 2 -0.020381
0.00881488
-2.31211
0.0393258
Rsquared->0.614021,AdjustedRSquared->0.549692, EstimatedVariance->2.03968,ANOV A Table->
DF SumOfSq
MeanSq Fratio PValue Mode1 2 38.9371
19.4686 9.5449
0.00330658
Error 12 24.4762
2.03968
Total
14 63.4133
从输出结果可见: 回归方程为
,020381.000857.10333.192x x Y -+=
.020381.0ˆ,00857.1ˆ,0333.19ˆ2
10-===b b b 它们的置信水平为0.95的置信区间分别是 (11.8922,26.1745),(0.231975,1.78517),(-0.0395869,-0.00117497).
假设检验的结果是: 在显著性水平为0.95时它们都不等于零. 模型
),0(~,22210σεεN x b x b b Y +++=
中,2σ的估计为2.03968. 对模型参数T b b ),(21=β是否等于零的检验结果是: .0≠β因此回归效果显著.
非线性回归
例2.3 下面的数据来自对某种遗传特征的研究结果, 一共有2723对数据, 把它们分成8类后归纳为下表.
36
.1937.1991.2079.2115.2342.257.2908.3887654321917461203246071021579y x 遗传性指标分类变量频率 研究者通过散点图认为y 和x 符合指数关系:,c ae y bx += 其中c b a ,,是参数. 求参数c b a ,,的最小二乘估计.
因为y 和x 的关系不是能用Fit 命令拟合的线性关系, 也不能转换为线性回归模型. 因此考虑用(1)多元微积分的方法求c b a ,,的最小二乘估计; (2)非线性拟合命令NonlinearFit 求c b a ,,的最小二乘估计.
(1) 微积分方法 输入
Off[Genera1::spe11] Off[Genera1::spe111] Clear[x,y,a,b,c]
dataset={{579,1,38.08},{1021,2,29.70},{607,3,25.42},{324,4,23.15},
{120,5,21.79},{46,6,20.91},{17,7,19.37},{9,8,19.36}}; (*输入数据集*)
y[x_]:=a Exp[b x]+c (*定义函数关系*)
下面一组命令先定义了曲线c ae y bx +=与2723个数据点的垂直方向的距离平方和, 记为).,,(c b a g 再
求),,(c b a g 对c b a ,,的偏导数
,,,c
g
b g a g ∂∂∂∂∂∂分别记为.,,g
c gb ga 用FindRoot 命令解三个偏导数等于零组成的方程组(求解c b a ,,). 其结果就是所要求的c b a ,,的最小二乘估计. 输入
Clear[a,b,c,f,fa,fb,fc]
g[a_,b_,c_]:=Sum[dataset[[i,1]]*(dataset[[i,3]]-a
*Exp[dataset[[i,2]]*b]-c)^2,{i,1,Length[dataset]}] ga[a_,b_,c_]=D[g[a,b,c],a]; gb[a_,b_,c_]=D[g[a,b,c],b]; gc[a_,b_,c_]=D[g[a,b,c],c]; Clear[a,b,c]
oursolution=FindRoot[{ga[a,b,c]==0,gb[a,b,c]==0,
gc[a,b,c]==0},{a,40.},{b,-1.},{c,20.}]
(* 40是a 的初值, -1是b 的初值, 20是c 的初值*)
则输出
{a->33.2221,b->-0.626855,c->20.2913} 再输入
yhat[x_]=y[x]/.oursolution
则输出
20.2913+33.2221x
e 626855.0-
这就是y 和x 的最佳拟合关系. 输入以下命令可以得到拟合函数和数据点的图形:
p1=Plot[yhat[x],{x,0,12},PlotRange->{15,55},DisplayFunction->Identity]; pts=Table[{dataset[[i,2]],dataset[[i,3]]},{i,1,Length[dataset]}]; p2=ListPlot[pts,PlotStyle->PointSize[.01],DisplayFunction->Identity]; Show[p1,p2,DisplayFunction->$DisplayFunction];
则输出图2.4.
图2.4
(2) 直接用非线性拟合命令NonlinearFit 方法 输入
data2=Flatten[Table[Table[{dataset[[j,2]],dataset[[j, 3]]},
{i,dataset[[j,1]]}],{j,1,Length[dataset]}],1];
(*把数据集恢复成2723个数对的形式*)
<<Statistics`
w=NonlinearFit[data2,a*Exp[b*x]+c,{x},{{a,40},{b,-1},{c,20}}]
则输出
x e 626855.02221.332913.20-+
这个结果与(1)的结果完全相同. 这里同样要注意的是参数c b a ,,必须选择合适的初值.
如果要评价回归效果, 则只要求出2723个数据的残差平方和
.)ˆ(2
∑-i i
y
y 输入 yest=Table[yhat[dataset[[i,2]]],{i,1, Length[dataset]}];
yact=Table[dataset[[i,3]],{i,1,Length[dataset]}]; wts=Table[dataset[[i,1]],{i,1,Length[dataset]}]; sse=wts.(yact-yest)^2 (*作点乘运算*)
则输出
59.9664
即2723个数据的残差平方和是59.9664. 再求出2723个数据的总的相对误差的平方和.]ˆ/)ˆ[(2
∑-i i
i
y
y
y 输入
sse2=wts.((yact-yest)^2/yest) (*作点乘运算)
则输出
2.74075
由此可见, 回归效果是显著的.
实验习题
1.某乡镇企业的产品年销售额x 与所获纯利润y 从1984年的数据(单位:百万元)如下表
3
.225.207.174.157.135.117.94.83.84.65.43.349.328.294.241.214.176.147.104.95.71.694
93929190898887868584y x 纯利润销售额年度 试求y 对x 的经验回归直线方程, 并作回归分析.
2.在钢线碳含量对于电阻的效应的研究中, 得到以下数据
26
8.236.2221191815/95
.080.070.055.040.030.010.0%/Ωμy x 电阻碳含量
试求y 对x 的经验回归直线方程, 并作简单回归分析.
(1) 画出散点图;
(2) 求y 关于x 的线性回归方程,ˆˆˆx b a y
+=并作回归分析; (3) 求0.14=x 时y 的置信水平为0.95的预测区间.
4.下面给出了某种产品每件平均单价Y (单位:元)与批量x (单位:件)之间的关系的一组数 据
18
.120.121.124.126.130.140.148.155.165.170.181.190
8075706560504035302520y x
(i)作散点图. (ii)以模型),0(~,22210σεεN x b x b b Y +++=拟合数据, 求回归方程
,ˆˆˆˆ2210x b x b b Y ++=并作简单回归分析.]
实验3 方差分析
实验目的 学习利用Mathematica 求单因素方差分析的方法.
基本命令
1.调用线性回归软件包的命令<<Statistics\LinearRegression.m 作方差分析时, 必须调用线性回归软件包的命令 <<Statistics\LinearRegression.m 或输入调用整个统计软件包命令
<<Statistics`
2.线性设计回归的命令DesignedRegress 在线性回归模型
Y = X β +ε
中,向量Y 是因变量,也称作响应变量.矩阵X 称作设计矩阵, β是参数向量.ε是误差向量.
DesignedRegress 也是作一元和多元线性回归的命令, 它的应用范围更广些. 其格式与命令Regress 的格式略有不同:
DesignedRegress[设计矩阵X,因变量Y 的值集合,
RegressionReport ->{选项1, 选项2, 选项3,…}] RegressionReport(回归报告)可以包含:ParameterCITable(参数β的置信区间表), PredictedResponse (因变量的预测值), MeanPredictionCITable(均值的预测区间), FitResiduals(拟合的残差), SummaryReport(总结性报告)等, 但不含BestFit.
实验准备—将方差分析问题纳入线性回归问题
在线性回归中, 把总的平方和分解为回归平方和与误差平方和之和, 并在输出中给出了方差分析表. 而在方差分析问题中, 也把总的平方和分解为模型平方和与误差平方和之和, 其方法与线性回归中的方法相同. 因此只要把方差分析问题转化为线性模型的问题, 就可以利用线性回归中的设计回归命令DesignedRegress 做方差分析.。