【数学建模】单、多因素试验的方差分析(Matlab代码实现)
目錄
?
1 概述
2 單因素方差分析
2.1 語法
2.2 算例 1
2.2.1 算例
2.2.2?Matlab代碼
2.2.3?結果
2.3 算例2
2.3.1 算例
2.3.2 Matlab代碼
2.4 算例3
2.4.1 算例
2.4.2 Matlab代碼
2.4.3 結果
2.5 算例4(不均衡樣本)
2.5.1 算例
?2.5.2 Matlab代碼
2.5.3 結果
3 雙因子方差分析
3.1 語法
3.2?算例
3.3 Matlab代碼
3.4 結果
4 升級理解
4.1 算例
4.2 Matlab代碼實現
4.2.1 寫在前面
4.2.2 代碼
4.2.3 結果
1 概述
一個復雜的事物,其中往往有許多因素互相制約又互相依存。方差分析的目的是通過數據分析找出對該事物有顯著影響的因素,各因素之間的交互作用,以及顯著影響因素的最佳水平等。
這里介紹一下方差分析的一些概念和方法:試驗中要考察的指標稱為試驗指標,影響試驗指標的條件稱為因素,因素所處的狀態稱為水平,若試驗中只有一個因素改變則稱為單因素試驗,若有兩個因素改變則稱為雙因素試驗,若有多個因素改變則稱為多因素試驗。方差分析就是對試驗數據進行分析,檢驗方差相等的多個正態總體均值是否相等,進而判斷各因素對試驗指標的影響是否顯著,根據影響試驗指標條件的個數可以區分為單因素方差分析、雙因素方差分析和多因素方差分析。2 單因素方差分析
Matlab 統計工具箱中單因素方差分析的命令是 anoval?。?
若各組數據個數相等,稱為均衡數據。若各組數據個數不等,稱非均衡數據。?
2.1 語法
(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 名工人的勞動生產率是否相同,記錄了每人 4 天的產量,并算出其平均值,如表1?。你能從這些數據推斷出他們的生產率有無顯著差別嗎???
| 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?結果
(還輸出一個方差表和一個Box圖。 )運行后得到一表一圖,表是方差分析表(重要);圖是各列數據的盒子圖,離盒子圖中心線較遠的對應于較大的F值,較小的概率p.
1)方差表:?
?
anova1函數生成兩個圖形:
1)第一個圖為標準方差分析表,分為六列:
第一列:顯示誤差來源;
第二列:顯示每一誤差來源的平方和(ss);
第三列:顯示與每一誤差來源相關的自由度(df);
第四列:顯示均值平方和;
第五列:顯示F統計量;
第六列:顯示p值.
求得p=0.1109>a=0.05,故接受H0,即5名工人的生產率沒有顯著差異。若p值接近0,則認為列均值存在差異。若P值小于0.05或0.01,此時拒絕原假設,即5名工人的生產率沒有顯著差異。
有人要問為什么用結果與0.05來做比較,不然寫論文都不會寫了,這里普及一下基本知識:顯著性,又稱統計顯著性(Statistical significance), 是指零假設為真的情況下拒絕零假設所要承擔的風險水平,又叫概率水平,或者顯著水平。
顯著性的含義是指兩個群體的態度之間的任何差異是由于系統因素而不是偶然因素的影響。我們假定控制了可能影響兩個群體之間差異的所有其他因素,因此,余下的解釋就是我們所推斷的因素,而這個因素不能夠100%保證,所以有一定的概率值,叫顯著性水平(Significant level)。
我們一般認為大于0.05是不顯著。顯著性大于0.05,證明在百分之五水平上是不顯著的。
2)Box圖:
2.3 算例2
2.3.1 算例
本算例來源于2022華數杯比賽數據,插層后結構變量、產品性能的變化規律。試驗指標就是我們題目中的插層率,因素就是題目中的六個指標(特征)。這里僅以插層率為試驗指標,因素就是孔隙率。
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(均衡樣本). 某水產研究所為了比較四種不同配合飼料對魚的飼喂效果,選取了條件基本相同的魚20尾,隨機分成四組,投喂不同飼料,經一個月試驗以后,各組魚的增重結果列于下表。
四種不同飼料對魚的增重效果是否顯著 ?
| 飼料 | 魚的增重(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]; %原始數據輸入 B=A';% 將矩陣轉置,Matlab中要求各列為不同水平 p=anova1(B)2.4.3 結果
?因為p=0.0029<0.01,故不同飼料對魚的增重效果極為顯著 .
 四種不同飼料對魚的增重效果極為顯著 ,那么哪一種最好呢?請看下圖:
此時,第一個圖對應第一種飼料且離盒子圖中心線較遠,效果最突出。如果從原始數據中去掉第一種飼料的試驗數據,得到的結果為各種飼料之間對魚的增重效果不顯著 .
2.5 算例4(不均衡樣本)
2.5.1 算例
為比較同一類型的三種不同食譜的營養效果,將19支幼鼠隨機分為三組,各采用三種食譜喂養. 12周后測得體重,三種食譜營養效果是否有顯著差異?
| 食譜 | 體重增加量 | 
| 甲 | 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 結果
?因為p=0.18630.01,故不同飼料對魚的增重效果不顯著 .
3 雙因子方差分析
3.1 語法
雙因素方差分析:anova2
 調用格式:
 (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是一個矩陣;resp表示試驗的重復次數輸出的p值有三個,分別為各行、各列以及交互作用的概率.
 若p<0.05,有顯著差異
 若p<0.01,有高度顯著差異
3.2?算例
為了解3名修理工工作效率,每人修理三種磁盤系統各5個,時間如下:
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 結果
單、多因素試驗的方差分析
4 升級理解
4.1 算例
銀行在國家經濟社會發展過程中扮演者重要的決策,銀行的破產會對企業和個人造成眾多不利的影響。相比國內的銀行,國際銀行的倒閉頻次更高,因此國際銀行倒閉原因的分析與預測受到眾多管理者與學術研究者的廣泛關注。附件1中提供了波蘭2017年至2021年的現存或倒閉銀行的64項指標數據,各項數據指標具有對應的解釋。
請利用該64項指標對銀行倒閉的原因進行挖掘,并提供最為重要的5項指標數據及其對應的權重;
4.2 Matlab代碼實現
4.2.1 寫在前面
X = finv(P,V1,V2)
計算 F cdf 的逆,分子自由度為 V1,分母自由度為 V2,對應于 P 中的概率。P、V1 和 V2 可以是向量、矩陣或多維具有相同大小的數組。標量輸入擴展為與其他輸入具有相同維度的常量數組。 V1 和 V2 參數必須包含實數正值,并且 P 中的值必須位于區間 [0 1] 內。
 F 反函數根據 F cdf 定義為:
?從分子為 5 個自由度、分母為 10 個自由度的 F 分布中找出一個應超過 95% 樣本的值。
x = finv(0.95,5,10) x =3.3258 僅在 5% 的時間內偶然觀察到大于 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});%計算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影響顯著的指標 disp('主要指標序號') a=z(b(1:5)); disp(a)%指標序號 %% 權重就用余弦相似度確定,然后進行歸一化 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('權重') disp(W) %% 評價值 P=[data1(:,1:2),X(a,:)'*W'];%% 檢驗通過后,接下來就是求分界線,其實就是依次分類統計下均值在取個中間值就好了 %求每個主要指標的 % 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('主要指標分界點') % M=mean(M,2)4.2.3 結果
主要指標序號51 35 16 26 3權重0.2367 0.1979 0.1844 0.1857 0.1953總結
以上是生活随笔為你收集整理的【数学建模】单、多因素试验的方差分析(Matlab代码实现)的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 向日葵RCE复现
- 下一篇: 一文详解自动驾驶V2X车联网技术丨曼孚科
