深圳幻海软件技术有限公司 欢迎您!

双因素方差分析(R)

2023-03-25

目录原理双因素等重复试验的方差分析假设前提和模型设定离差平方和分解检验统计量和拒绝域例题应用双因素无重复试验的方差分析假设前提和模型设定离差平方和分解检验统计量和拒绝域例题应用原理在单因素方差分析的基础上,双因素方差分析有两种类型,一种是无交互作用(双因素无重复试验)的双因素方差分析,一种是有交互作

目录

原理

双因素等重复试验的方差分析

假设前提和模型设定

离差平方和分解

检验统计量和拒绝域

例题

应用

双因素无重复试验的方差分析

假设前提和模型设定

离差平方和分解

检验统计量和拒绝域

例题

应用


原理

在单因素方差分析的基础上,双因素方差分析有两种类型,一种是无交互作用(双因素无重复试验)的双因素方差分析,一种是有交互作用(双因素等重复试验)的双因素方差分析。

双因素等重复试验的方差分析

假设前提和模型设定

设有交互作用的两个因素A,B作用于试验的指标,因素A有r个水平,因素B有s个水平,现对因素A,B的水平的每对组合都作次试验(成为等重复试验),得到结果:

因素...
...
...
............
...

 由表可知,一共有r*s个总体,基于假设前提:

1.每个总体均服从正态分布,且方差相等,即,

 2.每个总体中抽取的样本相互独立

引入记号:

其中,的效应,的效应,且

表示为

其中,称为因素水平和因素水平的交互效应,且

 

因此可把写成,其中,各独立

对于这一模型,要检验以下三个假设:

离差平方和分解

引入记号:

总离差平方和:

其中,

组内离差平方和为

因素A的效应平方和为

因素B的效应平方和为

因素A、B交互效应平方和为

在实际计算中,可以使用以下公式简便计算:

计算

检验统计量和拒绝域

上述离差平方和的统计特性为

离差平方和自由度均值估计量
SSTrst-1
SSWrs(t-1)
SSAr-1
SSBs-1
SSAB(r-1)(s-1)

为真时,

故拒绝域为

类似地,假设的拒绝域为

假设的拒绝域为

双因素等重复试验的方差分析表
方差来源离差平方和自由度均方F比
因素ASSAr-1
因素BSSBs-1
交互作用SSAB(r-1)(s-1)
误差SSWrs(t-1)
总和SSTrst-1

例题

一火箭使用四种燃料A,三种推进器B作射程试验,每种燃料与每种推进器的组合各发射火箭两次,得到射程结果服从双因素方差分析假设条件(以海里计),检验两个因素及交互效应是否显著

  1. B1=c(58.2,52.6,49.1,42.8,60.1,58.3,75.8,71.5)
  2. B2=c(56.2,41.2,54.1,50.5,70.9,73.2,58.2,51.0)
  3. B3=c(65.3,60.8,51.6,48.4,39.2,40.7,48.7,41.4)
  4. d=cbind(B1,B2,B3)
  5. data=data.frame(d)
  6. rownames(data)=c("A1","A1*","A2","A2*",
  7. "A3","A3*","A4","A4*")
  8. r=4
  9. s=3
  10. t=2
  11. n=24
  12. Xbar=mean(c(mean(data$B1),mean(data$B2),mean(data$B3)))
  13. SST=sum((c(data$B1,data$B2,data$B3)-Xbar)**2)
  14. tdata=data.frame(t(data))
  15. SSA=s*t*((mean(c(tdata$A1,tdata$A1.))-Xbar)**2+
  16. (mean(c(tdata$A2,tdata$A2.))-Xbar)**2+
  17. (mean(c(tdata$A3,tdata$A3.))-Xbar)**2+
  18. (mean(c(tdata$A4,tdata$A4.))-Xbar)**2)
  19. SSB=r*t*((mean(data$B1)-Xbar)**2+
  20. (mean(data$B2)-Xbar)**2+
  21. (mean(data$B3)-Xbar)**2)
  22. SSAB=0
  23. m=function(rc,sc){
  24. #引入目标数组函数简化代码,前述计算也可以用这个函数
  25. y=c()
  26. for(i in rc){
  27. for(j in sc){
  28. y=c(y,data[t*i-1,j],data[t*i,j])
  29. }
  30. }
  31. return(y)
  32. }
  33. for(i in 1:r){
  34. for(j in 1:s){
  35. Xijbar=mean(m(i,j))
  36. Xibar=mean(m(i,c(1,2,3)))
  37. Xjbar=mean(m(c(1,2,3,4),j))
  38. Xbar=mean(m(c(1,2,3,4),c(1,2,3)))
  39. SSAB=SSAB+(Xijbar-Xibar-Xjbar+Xbar)**2
  40. }
  41. }
  42. SSAB=t*SSAB
  43. SSW=SST-SSA-SSB-SSAB
  44. tab1=data.frame(matrix(nrow = 5,ncol = 5))
  45. colnames(tab1)=c("方差来源","偏差平方和","自由度",
  46. "均方","F比")
  47. tab1[1,1]="因素A"
  48. tab1[2,1]="因素B"
  49. tab1[3,1]="交互作用"
  50. tab1[4,1]="误差"
  51. tab1[5,1]="总和"
  52. tab1[1,2]=SSA
  53. tab1[2,2]=SSB
  54. tab1[3,2]=SSAB
  55. tab1[4,2]=SSW
  56. tab1[5,2]=SST
  57. tab1[1,3]=r-1
  58. tab1[2,3]=s-1
  59. tab1[3,3]=(r-1)*(s-1)
  60. tab1[4,3]=r*s*(t-1)
  61. tab1[5,3]=r*s*t-1
  62. tab1[1,4]=SSA/(r-1)
  63. tab1[2,4]=SSB/(s-1)
  64. tab1[3,4]=SSAB/((r-1)*(s-1))
  65. tab1[4,4]=SSW/(r*s*(t-1))
  66. tab1[1,5]=tab1[1,4]/tab1[4,4]
  67. tab1[2,5]=tab1[2,4]/tab1[4,4]
  68. tab1[3,5]=tab1[3,4]/tab1[4,4]
  69. qf(1-0.05,r-1,r*s*(t-1))
  70. qf(1-0.05,s-1,r*s*(t-1))
  71. qf(1-0.05,(r-1)*(s-1),r*s*(t-1))

 

 由于

F_{A}=4.417388>F_{0.05}(3,12)=3.490295

F_{B}=9.393902>F_{0.05}(2,12)=3.885294

F_{AB}=14.928825>F_{0.05}(6,12)=2.99612

所以因素A,B及其交互效应都显著。

应用

  1. A=c("A1","A1","A2","A2","A3","A3","A4","A4")
  2. mdat=data.frame(A,B1,B2,B3)
  3. library(reshape2)
  4. mdata=melt(mdat,
  5. id.vars = "A",
  6. measure.vars = c("B1","B2","B3"),
  7. variable.name = "B",
  8. value.name = "range")
  9. aov=aov(range~A+B+A*B,data=mdata)
  10. summary(aov)

双因素无重复试验的方差分析

假设前提和模型设定

如果在实际问题中,已经知道因素A、B不存在交互作用,就可以对每一个组合只做一次试验,得到实验结果

因素...
...
...
...............
...

 由表可知,一共有r*s个样本数据,基于假设前提:

1.每个样本数据均服从正态分布,且方差相等,即,

 2.每个样本数据相互独立

沿用上一试验的记号,由于不存在交互作用,,于是

,其中且各独立

所需检验的假设为:

 

离差平方和分解

总离差平方和为

因素A的效应平方和为

因素B的效应平方和为

组内离差平方和为

为简便计算,可先计算其他离差平方和,再计算SSW

检验统计量和拒绝域

上述离差平方和的统计特性为

离差平方和自由度均值估计量
SSTrs-1
SSAr-1

SSBs-1

SSW(r-1)(s-1)

假设的拒绝域为

假设的拒绝域为

双因素无重复试验的方差分析表
方差来源离差平方和自由度均方F比
因素ASSAr-1
因素BSSBs-1
误差SSW(r-1)(s-1)

总和SSTrs-1

例题

有5个不同时间、4个不同地点空气中的颗粒物的含量(以计)的数据,符合假设前提,检验是否显著

  1. B1=c(76,82,68,63)
  2. B2=c(67,69,59,56)
  3. B3=c(81,96,67,64)
  4. B4=c(56,59,54,58)
  5. B5=c(51,70,42,37)
  6. data2=data.frame(B1,B2,B3,B4,B5)
  7. rowname=c("A1","A2","A3","A4")
  8. rownames(data2)=rowname
  9. r=dim(data2)[1]
  10. s=dim(data2)[2]
  11. n=r*s
  12. m=function(rc,sc){
  13. y=c()
  14. for(i in rc){
  15. for(j in sc){
  16. y=c(y,data2[i,j])
  17. }
  18. }
  19. return(y)
  20. }
  21. data2[5,1]=sum(m(1:r,1))
  22. data2[5,2]=sum(m(1:r,2))
  23. data2[5,3]=sum(m(1:r,3))
  24. data2[5,4]=sum(m(1:r,4))
  25. data2[5,5]=sum(m(1:r,5))
  26. rownames(data2)=c(rowname,"Tj")
  27. Ti=c()
  28. for(i in 1:(r+1)){
  29. Ti=c(Ti,sum(m(i,1:s)))
  30. }
  31. data2$Ti=Ti
  32. SST=sum(m(1:r,1:s)**2)-(sum(m(1:r,1:s))**2)/r/s
  33. SSA=sum(m(1:r,6)**2)/s-(sum(m(1:r,1:s))**2)/r/s
  34. SSB=sum(m(5,1:s)**2)/r-(sum(m(1:r,1:s))**2)/r/s
  35. SSW=SST-SSA-SSB
  36. tab2=data.frame(matrix(nrow = 4,ncol = 5))
  37. colnames(tab2)=c("方差来源","平方和","自由度","均方","F比")
  38. tab2[1,1]="因素A"
  39. tab2[2,1]="因素B"
  40. tab2[3,1]="误差"
  41. tab2[4,1]="总和"
  42. tab2[1,2]=SSA
  43. tab2[2,2]=SSB
  44. tab2[3,2]=SSW
  45. tab2[4,2]=SST
  46. tab2[1,3]=r-1
  47. tab2[2,3]=s-1
  48. tab2[3,3]=(r-1)*(s-1)
  49. tab2[4,3]=r*s-1
  50. tab2[1,4]=tab2[1,2]/tab2[1,3]
  51. tab2[2,4]=tab2[2,2]/tab2[2,3]
  52. tab2[3,4]=tab2[3,2]/tab2[3,3]
  53. tab2[1,5]=tab2[1,4]/tab2[3,4]
  54. tab2[2,5]=tab2[2,4]/tab2[3,4]
  55. qf(1-0.05,r-1,(r-1)*(s-1))
  56. qf(1-0.05,s-1,(r-1)*(s-1))

 由于

F_{A}=10.72241>F_{0.05}(3,12)=3.490295

F_{B}=13.23929>F_{0.05}(4,12)=3.259167

所以因素A、B都显著。

应用

  1. library(reshape2)
  2. month=c("A1","A2","A3","A4")
  3. Dat2=data.frame(month,B1,B2,B3,B4,B5)
  4. rdata2=melt(Dat2,
  5. id.vars = "month",
  6. measure.vars = c("B1","B2","B3","B4","B5"),
  7. variable.name = "province",
  8. value.name = "concentration")
  9. aov=aov(concentration~month+province,
  10. data=rdata2)
  11. summary(aov)