【数学建模】单、多因素试验的方差分析(Matlab代码实现)
目錄
?
1 概述
2 單因素方差分析
2.1 語(yǔ)法
2.2 算例 1
2.2.1 算例
2.2.2?Matlab代碼
2.2.3?結(jié)果
2.3 算例2
2.3.1 算例
2.3.2 Matlab代碼
2.4 算例3
2.4.1 算例
2.4.2 Matlab代碼
2.4.3 結(jié)果
2.5 算例4(不均衡樣本)
2.5.1 算例
?2.5.2 Matlab代碼
2.5.3 結(jié)果
3 雙因子方差分析
3.1 語(yǔ)法
3.2?算例
3.3 Matlab代碼
3.4 結(jié)果
4 升級(jí)理解
4.1 算例
4.2 Matlab代碼實(shí)現(xiàn)
4.2.1 寫(xiě)在前面
4.2.2 代碼
4.2.3 結(jié)果
1 概述
一個(gè)復(fù)雜的事物,其中往往有許多因素互相制約又互相依存。方差分析的目的是通過(guò)數(shù)據(jù)分析找出對(duì)該事物有顯著影響的因素,各因素之間的交互作用,以及顯著影響因素的最佳水平等。
這里介紹一下方差分析的一些概念和方法:試驗(yàn)中要考察的指標(biāo)稱(chēng)為試驗(yàn)指標(biāo),影響試驗(yàn)指標(biāo)的條件稱(chēng)為因素,因素所處的狀態(tài)稱(chēng)為水平,若試驗(yàn)中只有一個(gè)因素改變則稱(chēng)為單因素試驗(yàn),若有兩個(gè)因素改變則稱(chēng)為雙因素試驗(yàn),若有多個(gè)因素改變則稱(chēng)為多因素試驗(yàn)。方差分析就是對(duì)試驗(yàn)數(shù)據(jù)進(jìn)行分析,檢驗(yàn)方差相等的多個(gè)正態(tài)總體均值是否相等,進(jìn)而判斷各因素對(duì)試驗(yàn)指標(biāo)的影響是否顯著,根據(jù)影響試驗(yàn)指標(biāo)條件的個(gè)數(shù)可以區(qū)分為單因素方差分析、雙因素方差分析和多因素方差分析。2 單因素方差分析
Matlab 統(tǒng)計(jì)工具箱中單因素方差分析的命令是 anoval?。?
若各組數(shù)據(jù)個(gè)數(shù)相等,稱(chēng)為均衡數(shù)據(jù)。若各組數(shù)據(jù)個(gè)數(shù)不等,稱(chēng)非均衡數(shù)據(jù)。?
2.1 語(yǔ)法
(1) p=anova1(X)
(2) p=anova1(X,group) %group用于不均衡樣本
(3) p=anova1(X,group,displayopt)
(4) [p,table]=anova1(…) %table顯示方差表
(5) [p,table,stats]=anova1(…) %stats顯示箱圖
2.2 算例 1
2.2.1 算例
為考察 5 名工人的勞動(dòng)生產(chǎn)率是否相同,記錄了每人 4 天的產(chǎn)量,并算出其平均值,如表1?。你能從這些數(shù)據(jù)推斷出他們的生產(chǎn)率有無(wú)顯著差別嗎???
| 256 | 254 | 250 | 248 | 236 |
| 242 | 330 | 277 | 280 | 252 |
| 280 | 290 | 230 | 305 | 220 |
| 298 | 295 | 302 | 289 | 252 |
2.2.2?Matlab代碼
x=[256 254 250 248 236 242 330 277 280 252 280 290 230 305 220 298 295 302 289 252]; p=anova1(x)2.2.3?結(jié)果
(還輸出一個(gè)方差表和一個(gè)Box圖。 )運(yùn)行后得到一表一圖,表是方差分析表(重要);圖是各列數(shù)據(jù)的盒子圖,離盒子圖中心線較遠(yuǎn)的對(duì)應(yīng)于較大的F值,較小的概率p.
1)方差表:?
?
anova1函數(shù)生成兩個(gè)圖形:
1)第一個(gè)圖為標(biāo)準(zhǔn)方差分析表,分為六列:
第一列:顯示誤差來(lái)源;
第二列:顯示每一誤差來(lái)源的平方和(ss);
第三列:顯示與每一誤差來(lái)源相關(guān)的自由度(df);
第四列:顯示均值平方和;
第五列:顯示F統(tǒng)計(jì)量;
第六列:顯示p值.
求得p=0.1109>a=0.05,故接受H0,即5名工人的生產(chǎn)率沒(méi)有顯著差異。若p值接近0,則認(rèn)為列均值存在差異。若P值小于0.05或0.01,此時(shí)拒絕原假設(shè),即5名工人的生產(chǎn)率沒(méi)有顯著差異。
有人要問(wèn)為什么用結(jié)果與0.05來(lái)做比較,不然寫(xiě)論文都不會(huì)寫(xiě)了,這里普及一下基本知識(shí):顯著性,又稱(chēng)統(tǒng)計(jì)顯著性(Statistical significance), 是指零假設(shè)為真的情況下拒絕零假設(shè)所要承擔(dān)的風(fēng)險(xiǎn)水平,又叫概率水平,或者顯著水平。
顯著性的含義是指兩個(gè)群體的態(tài)度之間的任何差異是由于系統(tǒng)因素而不是偶然因素的影響。我們假定控制了可能影響兩個(gè)群體之間差異的所有其他因素,因此,余下的解釋就是我們所推斷的因素,而這個(gè)因素不能夠100%保證,所以有一定的概率值,叫顯著性水平(Significant level)。
我們一般認(rèn)為大于0.05是不顯著。顯著性大于0.05,證明在百分之五水平上是不顯著的。
2)Box圖:
2.3 算例2
2.3.1 算例
本算例來(lái)源于2022華數(shù)杯比賽數(shù)據(jù),插層后結(jié)構(gòu)變量、產(chǎn)品性能的變化規(guī)律。試驗(yàn)指標(biāo)就是我們題目中的插層率,因素就是題目中的六個(gè)指標(biāo)(特征)。這里僅以插層率為試驗(yàn)指標(biāo),因素就是孔隙率。
2.3.2 Matlab代碼
clear all clc load data.mat; p=anova1(data)p = 6.2588e-11<0.05,影響非常顯著!
2.4 算例3
2.4.1 算例
例1(均衡樣本). 某水產(chǎn)研究所為了比較四種不同配合飼料對(duì)魚(yú)的飼喂效果,選取了條件基本相同的魚(yú)20尾,隨機(jī)分成四組,投喂不同飼料,經(jīng)一個(gè)月試驗(yàn)以后,各組魚(yú)的增重結(jié)果列于下表。
四種不同飼料對(duì)魚(yú)的增重效果是否顯著 ?
| 飼料 | 魚(yú)的增重(xj) | ||||
| A1 | 31.9 | 27.9 | 31.8 | 28.4 | 35.9 |
| A2 | 24.8 | 25.7 | 26.8 | 27.9 | 26.2 |
| A3 | 22.1 | 23.6 | 27.3 | 24.9 | 25.8 |
| A4 | 27 | 30.8 | 29.o | 24.5 | 28.5 |
2.4.2 Matlab代碼
A=[31.9 27.9 31.8 28.4 35.924.8 25.7 26.8 27.9 26.222.1 23.6 27.3 24.9 25.8]; %原始數(shù)據(jù)輸入 B=A';% 將矩陣轉(zhuǎn)置,Matlab中要求各列為不同水平 p=anova1(B)2.4.3 結(jié)果
?因?yàn)閜=0.0029<0.01,故不同飼料對(duì)魚(yú)的增重效果極為顯著 .
四種不同飼料對(duì)魚(yú)的增重效果極為顯著 ,那么哪一種最好呢?請(qǐng)看下圖:
此時(shí),第一個(gè)圖對(duì)應(yīng)第一種飼料且離盒子圖中心線較遠(yuǎn),效果最突出。如果從原始數(shù)據(jù)中去掉第一種飼料的試驗(yàn)數(shù)據(jù),得到的結(jié)果為各種飼料之間對(duì)魚(yú)的增重效果不顯著 .
2.5 算例4(不均衡樣本)
2.5.1 算例
為比較同一類(lèi)型的三種不同食譜的營(yíng)養(yǎng)效果,將19支幼鼠隨機(jī)分為三組,各采用三種食譜喂養(yǎng). 12周后測(cè)得體重,三種食譜營(yíng)養(yǎng)效果是否有顯著差異?
| 食譜 | 體重增加量 |
| 甲 | 164 190 203 205 206 214 228 257 |
| 乙 | 185 197 201 231 |
| 丙 | 187 212 215 220 248 256 281 |
?2.5.2 Matlab代碼
A=[164 190 203 205 206 214 228 257 185 197 201 231 187 212 215 220 248 265 281]; group=[ones(1,8),2*ones(1,4),3*ones(1,7)]; p=anova1(A, group)2.5.3 結(jié)果
?因?yàn)閜=0.18630.01,故不同飼料對(duì)魚(yú)的增重效果不顯著 .
3 雙因子方差分析
3.1 語(yǔ)法
雙因素方差分析:anova2
調(diào)用格式:
(1) p=anova2(X)
(2) p=anova2(X,reps)
(3) p=anova2(X,reps,displayopt)
(4) [p,table]=anova1(…)
(5) [p,table,stats]=anova1(…)
其中輸入X是一個(gè)矩陣;resp表示試驗(yàn)的重復(fù)次數(shù)輸出的p值有三個(gè),分別為各行、各列以及交互作用的概率.
若p<0.05,有顯著差異
若p<0.01,有高度顯著差異
3.2?算例
為了解3名修理工工作效率,每人修理三種磁盤(pán)系統(tǒng)各5個(gè),時(shí)間如下:
3.3 Matlab代碼
x=[62 48 63 57 69 57 45 39 54 44 59 53 67 66 4751 57 45 50 30 61 58 70 66 51 55 58 50 69 4959 65 55 52 70 58 63 70 53 60 47 56 51 44 50];p=anova2(x',5);3.4 結(jié)果
單、多因素試驗(yàn)的方差分析
4 升級(jí)理解
4.1 算例
銀行在國(guó)家經(jīng)濟(jì)社會(huì)發(fā)展過(guò)程中扮演者重要的決策,銀行的破產(chǎn)會(huì)對(duì)企業(yè)和個(gè)人造成眾多不利的影響。相比國(guó)內(nèi)的銀行,國(guó)際銀行的倒閉頻次更高,因此國(guó)際銀行倒閉原因的分析與預(yù)測(cè)受到眾多管理者與學(xué)術(shù)研究者的廣泛關(guān)注。附件1中提供了波蘭2017年至2021年的現(xiàn)存或倒閉銀行的64項(xiàng)指標(biāo)數(shù)據(jù),各項(xiàng)數(shù)據(jù)指標(biāo)具有對(duì)應(yīng)的解釋。
請(qǐng)利用該64項(xiàng)指標(biāo)對(duì)銀行倒閉的原因進(jìn)行挖掘,并提供最為重要的5項(xiàng)指標(biāo)數(shù)據(jù)及其對(duì)應(yīng)的權(quán)重;
4.2 Matlab代碼實(shí)現(xiàn)
4.2.1 寫(xiě)在前面
X = finv(P,V1,V2)
計(jì)算 F cdf 的逆,分子自由度為 V1,分母自由度為 V2,對(duì)應(yīng)于 P 中的概率。P、V1 和 V2 可以是向量、矩陣或多維具有相同大小的數(shù)組。標(biāo)量輸入擴(kuò)展為與其他輸入具有相同維度的常量數(shù)組。 V1 和 V2 參數(shù)必須包含實(shí)數(shù)正值,并且 P 中的值必須位于區(qū)間 [0 1] 內(nèi)。
F 反函數(shù)根據(jù) F cdf 定義為:
?從分子為 5 個(gè)自由度、分母為 10 個(gè)自由度的 F 分布中找出一個(gè)應(yīng)超過(guò) 95% 樣本的值。
x = finv(0.95,5,10) x =3.3258 僅在 5% 的時(shí)間內(nèi)偶然觀察到大于 3.3258 的值。4.2.2 代碼
clear clcload data1.mat; X=data1(:,3:end); %% 歸一化 X=mapminmax(X',0,1); group=data1(:,2)'; P=[]; F=[]; Fa=[]; Z=[]; for i=1:size(X,1)[p,anovatab,stats]=anova1(X(i,:),group);%單因素方差分析P=[P,p];fa=finv(0.95,anovatab{2,3},anovatab{3,3});%計(jì)算faFa=[Fa,fa];f=anovatab{2,5};%F值F=[F,f];if p<=0.01 & f>faZ=[Z,"非常顯著"];elseif p<=0.05 & f>faZ=[Z,"顯著"];elseZ=[Z,"不顯著"];end end z=find(Z=='非常顯著'); P=P(z); [P,b]=sort(P); %% top5影響顯著的指標(biāo) disp('主要指標(biāo)序號(hào)') a=z(b(1:5)); disp(a)%指標(biāo)序號(hào) %% 權(quán)重就用余弦相似度確定,然后進(jìn)行歸一化 C=[]; for i=1:length(a)C(i)=(group*X(a(i),:)')/(sqrt(sum(group.^2))*sqrt(sum(X(a(i),:).^2))); end W=C./sum(C); disp('權(quán)重') disp(W) %% 評(píng)價(jià)值 P=[data1(:,1:2),X(a,:)'*W'];%% 檢驗(yàn)通過(guò)后,接下來(lái)就是求分界線,其實(shí)就是依次分類(lèi)統(tǒng)計(jì)下均值在取個(gè)中間值就好了 %求每個(gè)主要指標(biāo)的 % M=[]; % for i=1:length(a); % M(i,:)=[mean(X(a(i)),find(data1(:,2)==0)),mean(X(a(i),find(data1(:,2)==1)))]; % end % disp('主要指標(biāo)分界點(diǎn)') % M=mean(M,2)4.2.3 結(jié)果
主要指標(biāo)序號(hào)51 35 16 26 3權(quán)重0.2367 0.1979 0.1844 0.1857 0.1953總結(jié)
以上是生活随笔為你收集整理的【数学建模】单、多因素试验的方差分析(Matlab代码实现)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 向日葵RCE复现
- 下一篇: 一文详解自动驾驶V2X车联网技术丨曼孚科