【数学建模】双因素方差分析

0.双因素方差分析的分类

  • 无交互作用的方差分析
    假定因素$A$和因素$B$的效应之间是相互独立的,不存在相互关系。
  • 有交互作用的方差分析
    假定因素$A$和因素$B$的结合会产生出一种新的效应。

无交互作用的双因素方差分析

1.形式

假定要考察两个因素$A,B$对某项指标的影响,因素$A$取$s$个水平$A_{1}, A_{2}, \dots, A_{s}$,因素$B$取$r$个水平$B_{1}, B_{2}, \dots, B_{r}$,在$A,B$的每队组合水平$\left(A_{i}, B_{j}\right)$上作一次试验,试验结果为$X_{i j}, i=1, \dots, s ;\space j=1, \dots, r$。所有$X_{ij}$独立,数据列于下表:

因素 $B_1$ $B_2$ $B_s$
$A_1$ $X_{11}$ $X_{12}$ $X_{1s}$
$A_2$ $X_{21}$ $X_{22}$ $X_{2s}$
$A_r$ $X_{r1}$ $X_{r2}$ $X_{rs}$

2.前期工作

  • 作出假设
    设搭配$\left(A_{i}, B_{j}\right)$下的试验结果为$X_{ij}$,假定$X_{i j} \sim N\left(a_{i j}, \sigma^{2}\right)$,则问题归结为检验假设:
    $$
    \begin{aligned}
    &H_{0 A}: a_{1 j}=a_{2 j}=\cdots=a_{j j}, j=1,2, \cdots, s\
    &H_{0 B}: a_{i 1}=a_{i 2}=\cdots=a_{i r}, i=1,2, \cdots, r
    \end{aligned}
    $$
  • 平方和分解
    与单因素方差分析类似地:
    $S_A$是由因素$A$的不同效应和随机误差引起的偏差
    $S_B$是由因素$B$的不同效应和随机误差引起的偏差
    $S_e$是由随机误差引起的偏差
    记:
    $$
    n=r s, \bar{X}{i}=\frac{1}{s} \sum{j=1}^{s} X_{i j}, \bar{X}{\cdot j}=\frac{1}{r} \sum{i=1}^{r} X_{i j}\
    T_{i \cdot}=\sum_{j=1}^{s} X_{i j}, T_{\cdot j}=\sum_{i=1}^{r} X_{i j}\
    \bar{X}=\frac{1}{r s} \sum_{i=1}^{r} \sum_{j=1}^{s} X_{i j}, T=\sum_{i=1}^{r} \sum_{j=1}^{s} X_{i j}\
    i=1,2, \cdots, r ; j=1,2, \cdots, s
    $$
    于是:
    $$
    S_{T}=\sum_{i=1}^{r} \sum_{j=1}^{s} X_{i j}^{2}-\frac{T^{2}}{r s}, S_{A}=\frac{1}{s} \sum_{i=1}^{r} T_{i \cdot}^{2}-\frac{T^{2}}{r s}\
    S_{B}=\frac{1}{r} \sum_{j=1}^{s} T_{\cdot j}^{2}-\frac{T^{2}}{r s},S_{e}=S_{T}-S_{A}-S_{B}
    $$

3.检验假设

比较$S_A$与$S_E$的值来检验假设$H_{0A}$
比较$S_B$与$S_E$的值来检验假设$H_{0B}$

  • 定理
    $S_T,S_A,S_B$相互独立,且$\frac{1}{\sigma^{2}} S_{e} \sim \chi^{2}((s-1)(r-1))$
    当$H_{0A}$成立时,有:
    $$F_{A}=\frac{S_{A} / \sigma^{2}}{r-1} / \frac{S_{e} / \sigma^{2}}{(r-1)(s-1)}=\frac{(s-1) S_{A}}{S_{e}} \sim F(r-1,(r-1)(s-1))$$
    当$H_{0B}$成立时,有:
    $$F_{B}=\frac{S_{B} / \sigma^{2}}{s-1} / \frac{S_{e} / \sigma^{2}}{(r-1)(s-1)}=\frac{(r-1) S_{A}}{S_{e}} \sim F(s-1,(r-1)(s-1))$$
  • 拒绝域
    $H_{0A}$的拒绝域为:
    $$F_{A} \geq F_{\alpha}(s-1,(s-1)(r-1))$$
    $H_{0B}$的拒绝域为:
    $$F_{B} \geq F_{\alpha}(r-1,(s-1)(r-1))$$
  • 方差分析表
    方差来源 平方和 自由度 $F$值 临界值
    因素$A$ $S_A$ $r-1$ $F_{A}=\frac{(s-1) S_{A}}{S_{e}}$ $F_{A\alpha}$
    因素$B$ $S_B$ $s-1$ $F_{B}=\frac{(r-1) S_{B}}{S_{e}}$ $F_{B\alpha}$
    试验误差 $S_e$ $(r-1)(s-1)$
    总和 $S_T$ $n-1$

4.实现

  • 例题
    为了研究不同地点,不同季节大气飘尘含量的差异性,对地点$A$取三个不同水平,对季节$B$取四个不同水平,在不同组合(A_i,B_j)下各测一次大气飘尘含量,结果建下表,请问研究地点间的差异和季节间的差异对大气飘尘含量有无影响? $(\alpha=0.05)$
因素 $B_1$ $B_2$ $B_3$ $B_4$
$A_1$ 1.150 0.614 0.475 0.667
$A_2$ 1.200 0.620 0.420 0.880
$A_3$ 0.940 0.379 0.200 0.540
  • Excel求解
    录入数据:

    在方差分析选项中选择“无重复双因素方差分析”,选中分析区域,$\alpha$设为0.05,单击“确定”:

    可在新工作表中看到结果:

  • MATLAB求解

function annova_solve()
    x = [1.150, 0.614, 0.475, 0.667;
        1.200, 0.620, 0.420, 0.880;
        0.940, 0.379, 0.200, 0.540];
    p = anova2(x);
end

运行结果:

  • Python求解
import pandas as pd
from statsmodels.formula.api import ols
from statsmodels.stats.anova import anova_lm

df = pd.read_csv('D:\Data\ex_2way_annova.csv')
print(df)
model = ols('content ~ season + location', data = df).fit()
table = anova_lm(model)
print(table)

运行结果:

  • 结论
    $F_{A}=23.848>F_{A \alpha}=10.92, F_{B}=88.848>F_{B \alpha}=9.78$,拒绝$H_{0A},H_{0B}$,认为两个因素都有影响。

有交互作用的双因素方差分析

1.形式

假定要考察两个因素$A,B$对某项指标的影响,因素$A$取$s$个水平$A_{1}, A_{2}, \dots, A_{s}$,因素$B$取$r$个水平$B_{1}, B_{2}, \dots, B_{r}$,在$A,B$的每队组合水平$\left(A_{i}, B_{j}\right)$上尸检结果独立地服从$N\left(\mu_{i j}, \sigma^{2}\right)$分布,如下表:

因素 $B_1$ $B_2$ $B_s$
$A_1$ $X_{111},…,X_{11t}$ $X_{121},…,X_{12t}$ $X_{1s1},…,X_{1st}$
$A_2$ $X_{211},…,X_{21t}$ $X_{221},…,X_{22t}$ $X_{2s1},…,X_{2st}$
$A_r$ $X_{r11},…,X_{r1t}$ $X_{r21},…,X_{r2t}$ $X_{rs1},…,X_{rst}$

2.参数

为了方便研究,令:
$$\begin{aligned}
&\mu=\frac{1}{r s} \sum_{i=1}^{r} \sum_{j=1}^{s} \mu_{i j}\
&\mu_{i .}=\frac{1}{s} \sum_{j=1}^{s} \mu_{i j} \quad \alpha_{i}=\mu_{i .}-\mu \quad i=1,2, \ldots, r\
&\mu_{. j}=\frac{1}{r} \sum_{i=1}^{r} \mu_{i j} \quad \beta_{j}=\mu_{. j}-\mu \quad j=1,2, \ldots, s
\end{aligned}$$
称$\mu$为一般平均值,$\alpha_{i}$为因素$A$的第$i$个水平的效应,有如下关系式:
$$\sum_{i=1}^{r} \alpha_{i}=0 \quad \sum_{j=1}^{s} \beta_{j}=0$$
若$\mu_{i j} \neq \mu+\alpha_{i}+\beta_{j}$,则称$\gamma_{i j}=\mu_{i j}-\mu-\alpha_{i}-\beta_{j}$为因素$A$的第$i$个水平与因素$B$的第$j$个水平的交互效应,它们满足关系式:
$$\begin{aligned}
&\sum_{i=1}^{r} \gamma_{i j}=0, \quad j=1,2, \ldots, s\
&\sum_{j=1}^{s} \gamma_{i j}=0, \quad i=1,2, \ldots, r
\end{aligned}$$

3.模型与假设

  • 有交互的双因素方差分析模型
    $$\begin{aligned}
    &X_{i j k}=\mu+\alpha_{i}+\beta_{j}+\gamma_{i j}+\varepsilon_{i j k}\
    &\sum_{i=1}^{r} \alpha_{i}=0, \quad \sum_{j=1}^{s} \beta_{j}=0\
    &\sum_{i=1}^{r} \gamma_{i j}=0, \quad \sum_{j=1}^{s} \gamma_{i j}=0\
    &\varepsilon_{i j k} \sim N\left(0, \sigma^{2}\right),且相互独立
    \end{aligned}\
    i=1,2, \ldots, r ; \quad j=1,2, \ldots, s ; \quad k=1,2, \ldots, t
    $$
  • 需要检验的假设
    $$\begin{aligned}
    &H_{01}: \alpha_{1}=\alpha_{2}=\ldots=\alpha_{r}=0\
    &H_{02}: \beta_{1}=\beta_{2}=\ldots=\beta_{s}=0\
    &H_{03}: \gamma_{\bar{y}}=0, \quad \forall i, j
    \end{aligned}$$

4.平方和分解

  • 记号引入
    $$X=\frac{1}{rst} \sum_{i=1}^{r} \sum_{j=1}^{s} \sum_{k=1}^{t} X_{i j k}\
    \begin{aligned}
    &X_{ij\cdot} =\sum_{k=1}^{t} X_{i j k}, \quad \bar{X}{i j\cdot} =\frac{1}{t} X{i j\cdot} , \quad i=1,2, \ldots, r ; \quad j=1,2, \ldots, s\
    &X_{i\cdot\cdot} =\sum_{j=1}^{s} \sum_{k=1}^{t} X_{i j k}, \quad \bar{X}{i \cdot \cdot}=\frac{1}{s t} X{i\cdot\cdot}, \quad i=1,2, \ldots, r\
    &X_{\cdot j\cdot}=\sum_{j=1}^{r} \sum_{k=1}^{t} X_{i j k}, \quad \bar{X}{\cdot j\cdot}=\frac{1}{r t} X{i\cdot\cdot}, \quad j=1,2, \ldots, s
    \end{aligned}$$
    由此可得:
    $$\begin{aligned}
    &\bar{X}=\mu+\bar{s}\
    &\bar{X}{i j\cdot}=\mu+\alpha{i}+\beta_{j}+\gamma_{i j}+\bar{\varepsilon}{i j\cdot}\
    &\bar{X}
    {i\cdot\cdot}=\mu+\alpha_{j}+\bar{\varepsilon}{i\cdot\cdot}\
    &\bar{X}
    {\cdot j \cdot}=\mu+\beta_{j}+\bar{\varepsilon}_{\cdot j\cdot}
    \end{aligned}$$
  • 平方和分解
    $$\begin{aligned}
    &S_{T}=\sum_{i=1}^{r} \sum_{j=1}^{s} \sum_{k=1}^{t}\left(X_{i j k}-\bar{X}\right)^{2}\
    &=S_{E}+S_{A}+S_{B}+S_{A \times B}
    \end{aligned}$$
  • 误差平方和
    试验的随机波动引起的误差。
    $$S_{E}=\sum_{i=1}^{r} \sum_{j=1}^{s} \sum_{k=1}^{t}\left(X_{i j k}-\bar{X}_{i j\cdot} \right)^{2}$$
  • 因子$A$的偏差平方和
    除了反映了试验的随机波动引起的误差外,还反映了因子A的效应间的差异。
    $$S_{A}=\sum_{i=1}^{r} s t\left(\bar{X}_{i\cdot\cdot}-\bar{X}\right)^{2}$$
  • 因子$B$的偏差平方和
    除了反映了试验的随机波动引起的误差外,还反映了因子B的效应间的差异。
    $$S_{B}=\sum_{j=1}^{s} r t\left(\bar{X}_{\cdot j\cdot}-\bar{X}\right)^{2}$$
  • 交互作用的偏差平方和
    除了反映了试验的随机波动引起的误差外,还反映了交互效应的差异所引起的波动。
    $$S_{A \times B}=\sum_{i=1}^{r} \sum_{j=1}^{s} t\left(\bar{X}{i j\cdot}-\bar{X}{i \cdot \cdot}-\bar{X}_{\cdot j \cdot}+\bar{X}\right)^{2}$$
  • 计算公式
    $$\begin{aligned}
    &S_{T}=\sum_{i=1}^{r} \sum_{j=1}^{s} \sum_{k=1}^{t} X_{i j k}^{2}-n \bar{X}^{2} \quad f_{T}=r s t-1\
    &S_{A}=\frac{1}{s t} \sum_{i=1}^{r} X_{i . .}^{2}-n \bar{X}^{2} \quad \quad f_{A}=r-1\
    &S_{B}=\frac{1}{r t} \sum_{i=1}^{r} X_{. j .}^{2}-n \bar{X}^{2} \quad f_{B}=s-1\
    &S_{A \times B}=\frac{1}{t} \sum_{i=1}^{r} \sum_{j=1}^{s} X_{i j .}^{2}-n \bar{X}^{2}-S_{A}-S_{B} \quad f_{A \times B}=(r-1)(s-1)\
    &S_{E}=S_{T}-S_{A}-S_{B}-S_{A X B} \quad f_{E}=r s(t-1)
    \end{aligned}$$

5.假设检验

  • 检验统计量
    当$H_{01}$为真时:
    $$F_{A}=\frac{S_{A} /(r-1)}{S_{E} / r s(t-1)} \sim F(r-1, r s(t-1))$$
    当$H_{02}$为真时:
    $$F_{B}=\frac{S_{B} /(s-1)}{S_{E} / r s(t-1)} \sim F(s-1, r s(t-1))$$
    当$H_{03}$为真时:
    $$F_{A \times B}=\frac{S_{A \times B} /(r-1)(s-1)}{S_{E} / r s(t-1)}
    \sim F((r-1)(s-1), r s(t-1))$$
  • 假设的拒绝
    对给定的显著性水平$\alpha$:
    当$F_A>F_{1-\alpha}(r-1,rs(t-1))$时拒绝$H_{01}$
    当$F_B>F_{1-\alpha}(s-1,rs(t-1))$时拒绝$H_{02}$
    当$F_{A\times B}>F_{1-\alpha}((r-1)(s-1),rs(t-1))$时拒绝$H_{03}$
  • 方差分析表
来源 平方和 自由度 均方和 $F$值 显著性
因子$A$ $S_A$ $r-1$ $S_A/(r-1)$ $F_A$
因子$B$ $S_B$ $s-1$ $S_B/(s-1)$ $F_B$
$A\times B$ $S_{A\times B}$ $(r-1)(s-1)$ $\frac{S_{A\times B}}{(r-1)(s-1)}$ $F_{A \times B}$
误差 $S_E$ $rs(t-1)$ $S_E/rs(t-1)$
总和 $S_T$ $rst-1$

一般,当$F>F_{0.99}$时,称因子的影响高度显著,记为“**”;当$F_{0.99}>F≥F_{0.95}$时,称因子的影响显著,记为“*”;当$F<F_{0.95}$时, 称因子无显著影响,即认为因子各水平间无差异。

6.实现

  • 例题
    在某化工生产中为了提高收率,选了三种不同浓度$A$,四种不同温度$B$做试验。在同一浓度与同一温度组合下各做二次试验,其收率数据如下而计算表所列(数据均已减去75)。试检验不同浓度,不同温度以及它们间的交互作用对收率有无显著影响。
因素 $B_1$ $B_2$ $B_3$ $B_4$ $X_{i\cdot \cdot}$ $X^2_{i\cdot \cdot}$
$A_1$ 14,10 11,11 13,9 10,12 90 8100
$A_2$ 9,7 10,8 7,11 6,10 68 4624
$A_3$ 5,11 13,14 12,13 14,10 92 8464
$X_{\cdot j\cdot}$ 56 67 65 62 250 21188
$X^2_{\cdot j\cdot}$ 3136 4489 4225 3844 15694
  • C++求解
#include<bits/stdc++.h>
using namespace std;

int main()
{
    int r = 3, s = 4, t = 2;
    double x[10][10][10]= {
    {{14,10},{11,11},{13, 9},{10,12}}, //data
    {{ 9, 7},{10, 8},{ 7,11},{ 6,10}},
    {{ 5,11},{13,14},{12,13},{14,10}}
    };
    double n_sq_x_bar = 0;
    double sq_x = 0;
    double x_ijdot = 0;
    double tmp = 0, tmp1 = 0, tmp2 = 0;
    double x_dot_j_dot[10];
    memset(x_dot_j_dot, 0, sizeof(x_dot_j_dot));
    double x_i_dot_dot[10];
    memset(x_i_dot_dot, 0, sizeof(x_i_dot_dot));
    for(int i = 0; i < r; ++i)
    {
        for(int j = 0; j < s; ++j)
        {
            for(int k = 0; k < t; ++k)
            {
                x_dot_j_dot[j] += x[i][j][k];
                x_i_dot_dot[i] += x[i][j][k];
                tmp += x[i][j][k];
                n_sq_x_bar += x[i][j][k];
                sq_x += x[i][j][k] * x[i][j][k];
            }
            x_ijdot += tmp * tmp;
            tmp = 0;
        }
    }
    double sum_x_dot_j_dot = 0;
    for(int i = 0; i < s; ++i)
    {
        sum_x_dot_j_dot += x_dot_j_dot[i] * x_dot_j_dot[i];
    }
    double sum_x_i_dot_dot = 0;
    for(int i = 0; i < r; ++i)
    {
        sum_x_i_dot_dot += x_i_dot_dot[i] * x_i_dot_dot[i];
    }
    // cout << sum_x_dot_j_dot << " " << sum_x_i_dot_dot << endl;
    n_sq_x_bar /= 24;
    n_sq_x_bar *= n_sq_x_bar;
    n_sq_x_bar *= 24;
    // cout << n_sq_x_bar << " " << sq_x << " " << x_ijdot << endl;
    double S_T = sq_x - n_sq_x_bar;
    double S_A = sum_x_i_dot_dot / (s * t) - n_sq_x_bar;
    double S_B = sum_x_dot_j_dot / (r * t) - n_sq_x_bar;
    double S_AB = (1.0 / t) * x_ijdot - n_sq_x_bar - S_A - S_B;
    double S_E = S_T - S_A - S_B - S_AB;
    // cout << S_T << " " << S_A << " " << S_B << " " << S_AB << endl;
    double F_A = (S_A / (r - 1)) / (S_E / (r * s * (t - 1)));
    double F_B = (S_B / (s - 1)) / (S_E / (r * s * (t - 1)));
    double F_AB = (S_AB / ((r - 1) * (s - 1))) / (S_E / (r * s * (t - 1)));
    // cout << "F_A = " << F_A << "\nF_B = " << F_B << "\nF_AB = " << F_AB << endl;
    cout << "source\tdf\tSS\tMS\t\F" << endl;
    cout << "A\t" << r - 1 << "\t" << S_A << "\t" << S_A/(r - 1) << "\t" << F_A << endl;
    cout << "B\t" << s - 1 << "\t" << S_B << "\t" << S_B/(s - 1) << "\t" << F_B << endl;
    cout << "AXB\t" << (r - 1) * (s - 1) << "\t" << S_AB << "\t" << S_AB / ((r - 1) * (s - 1)) << "\t" << F_AB << endl;
    cout << "error\t" << r * s * (t - 1) << "\t" << S_E << "\t" << S_E/(r * s * (t - 1)) << endl;
    cout << "total\t" << r * s * t - 1 << "\t" << S_T << endl;

    return 0;
}

运行结果:

  • MATLAB求解
function annova_solve()
    x = [14, 11, 13, 10;
        10, 11, 9, 12;
        9, 10, 7, 6;
        7, 8, 11, 10;
        5, 13, 12, 14;
        11, 14, 13, 10];
    p = anova2(x,2);
end

运行结果:

  • Excel求解
    录入数据如下:

在“数据分析”中选择“可重复双因素分析”,选择区域,单击“确定”:

结果如下:

  • 结论
    查表可知,$F_{0.05}<F_{A}<F_{0.01}$,$F_{B},F_{A\times B}<F_{0.05}$。故认为浓度影响较为显著,温度与交互作用影响不显著。

暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
隐藏
变装