实验的方差分析(R语言)

实验设计与数据处理(大数据分析B中也用到F分布,故总结一下,加深印象)第3课小结——实验的方差分析(one-way analysis of variance)
文章出自:https://www.cnblogs.com/endlesscoding/p/9863790.html,未经博主同意,请勿转载。

概述

  • 实验结果\(S\)受多个因素\(A_i\)影响,但影响的程度各不相同,如何通过实验数据来确定因素的影响程度呢?其函数关系为
    \[
    S=f(A_1,A_2,\cdots,A_n)
    \tag{1}
    \]
  • 方差

标准差的平方,表征\(x_i\)与\(\bar{x}\)的偏离程度

  • 方差分析(ANalysis Of VAriance,简称ANOVA
    利用实验数据与均值的偏离程度来判断各因素对实验结果影响显著性程度的方法。 方差分析实质上是研究自变量(因素)与因变量(实验结果)的相互关系
  • 指标(experimental index)

衡量或考核实验效果的参数 。

  • 因素(experimental factor)

影响实验指标的条件,可控因素

  • 水平

因素的不同状态或内容

单因素实验的方差分析

单因素实验方差分析基本问题

(1)目的:检验一个因素对实验结果的影响是否显著性

单因素实验方差分析基本步骤

1)计算平均值

组内平均值(同一水平的平均值)

\[
\overline{x_i}=\frac{1}{n_i}\sum_{j=1}^{n_i}{x_{ij}}
\tag{2}
\]
总平均值
\[
\overline {x_i}=\frac{1}{n}\sum_{i=1}^{r}\sum_{j=1}^{n_i}{x_{ij}}
\tag{3}
\]

2)计算离差平方和

  • 总离差平方和\(SS_T\)(sum of squares for total)
    \[
    SS_T = \sum_{i=1}^{r}{\sum_{j=1}^{n_i}({x_{ij}-\overline{x}})^2}
    \tag{4}
    \]
    表示了各实验值与总平均值的偏差的平方和
    反映了实验结果之间存在的总差异
  • 组间离差平方和 \(SS_A\) (sum of square for factor A)

\[
SS_A = \sum_{i=1}^{r}{\sum_{j=1}^{n_i}({\overline{x_{i}}-\overline{x}})^2}
=\sum_{i=1}^{r}n_i({\overline{x_{i}}-\overline{x}})^2
\tag{5}
\]
反映了各组内平均值之间的差异程度
由于因素A不同水平的不同作用造成的

  • 组内离差平方和$ SS_e $(sum of square for error)
    \[
    SS_T = \sum_{i=1}^{r}{\sum_{j=1}^{n_i}({x_{ij}-\overline{x}_i})^2}
    \tag{6}
    \]

    反映了在各水平内,各实验值之间的差异程度
    由于随机误差的作用产生

  • 三种离差平方和之间关系:
    \[
    SS_T = SS_A + SS_e
    \tag{7}
    \]

3)计算自由度(degree of freedom)

  • 总自由度(\(SS_T\)对应的自由度):\(df_T=n-1\)
  • 组间自由度(\(SS_A\)对应的自由度):\(df_A=r-1\)
  • 组内自由度(\(SS_e\)对就的自由度):\(df_e=n-r\)

三者关系:\(df_T=df_A+df_e\)

4)计算平均平方

  • 均方 = 离差平方和除以对应的自由度
    \[
    MS_A = SS_A/df_A \quad \quad MS_e = SS_e / df_e
    \]

式中,\(MA_A\)——组间均方,\(MS_e\)——组内均方/误差的均方

5)F检验

\[
F_A = \frac{组间均方}{组内均方}=\frac{MS_A}{MS_e}
\tag{8}
\]

  • 服从自由度为\((df_A,df_e)\)的F分布(F distribution)
  • 对于给定的显著性水平\(\alpha\),从F分布表查得临界值\(F_{\alpha}(df_A,df_e)\)
  • 如果\(F_A > F_{\alpha}(df_A,df_e)\),则认为因素A对实验结果有显著影响,否则认为因素A对实验结果没有显著影响

6)方差分析表

差异源 \(SS\) \(df\) \(MS\) \(F\) 显著性
组间(因素A) \(SS_A\) \(r-1\) \(MS_A=SS_A/(r-1)\) \(MS_A/MS_e\)
组内(误差) \(SS_e\) \(n-r\) \(MS_e=SS_e/(n-r)\)
总和 \(SS_T\) \(n-1\)
  • 若\(F_A > F_{0.01}(df_A,df_e)\),称因素A对实验结果有非常显著的影响,用**号表示;
  • 若\(F_{0.05}(df_A,df_e)<F_A<F_{0.01}(df_A,df_e)\),则因素A对实验结果有显著的影响,用*号表示;
  • 若\(F_A < F_{0.05}(df_A,df_e)\),称因素A对实验结果的影响不显著

双因素实验的方差分析

  • 讨论两个因素对实验结果影响的显著性,以称二元方差分析

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

双因素无重复实验

\(B_1\) \(B_2\) \(\cdots\) \(B_s\)
\(A_1\) \(x_{11}\) \(x_{12}\) \(\cdots\) \(x_{1s}\)
\(A_2\) \(x_{21}\) \(x_{22}\) \(\cdots\) \(x_{2s}\)
\(\cdots\) \(\cdots\) \(\cdots\) \(\cdots\) \(\cdots\)
\(A_r\) \(x_{r1}\) \(x_{r2}\) \(\cdots\) \(x_{rs}\)

1)计算平均值

总平均:
\[
\overline{x} = \frac{1}{rs}\sum_{i=1}^{r}{\sum_{j=1}^{s}x_{ij}}
\tag{9}
\]

\(A_i\)水平时:
\[
\overline{x}_{i\cdot} = \frac{1}{s}\sum_{j=1}^{s}x_{ij}
\tag{10}
\]

\(B_j\)水平时:
\[
\overline{x}_{{\cdot}j}= \frac{1}{r}\sum_{i=1}^{s}x_{ij}
\tag{11}
\]

2)计算离差平方和

  • 总离差平方和:

\[
\overline{x} =\sum_{i=1}^{r}{\sum_{j=1}^{s}{(x_{ij}-\overline{x})^2}}
\tag{12}
\]

  • 因素A引起离差平方和:

\[
\overline{x} =\sum_{i=1}^{r}{\sum_{j=1}^{s}{(x_{i{\cdot}}-\overline{x})^2}}=s\sum_{j=1}^{r}{(x_{i{\cdot}}-\overline{x})^2}
\tag{13}
\]

  • 因素B引起的离差平方和:

\[
\overline{x} =\sum_{i=1}^{r}{\sum_{j=1}^{s}{(x_{{\cdot}j}-\overline{x})^2}}=r\sum_{j=1}^{s}{(x_{{\cdot}j}-\overline{x})^2}
\tag{14}
\]

  • 误差平方和:

\[
\overline{x} =\sum_{i=1}^{r}{\sum_{j=1}^{s}{(x_{ij}-x_{i{\cdot}}-x_{{\cdot}j}-\overline{x})^2}}
\tag{15}
\]

3)计算自由度

\(SS_A\)的自由度 \(SS_B\)的自由度 \(SS_e\)的自由度 \(SS_T\)的自由度
\(df_A=r-1\) \(df_B=s-1\) \(df_e=(r-1)(s-f)\) \(df_T=n-1=rs-1\)

4)计算均方

A均方 B均方 e均方
\(MS_A=\dfrac{SS_A}{df_A}=\dfrac{SS_A}{r-1}\) \(MS_B=\dfrac{SS_B}{df_A}=\dfrac{SS_B}{s-1}\) \(MS_e=\dfrac{SS_e}{df_e}=\dfrac{SS_e}{(r-1)(s-1)}\)

5)F 检验

  • \(F_A\)服从自由度为\((df_A,df_e)\)的F分布:\(F_A=\dfrac{MS_A}{MS_e}\)
  • \(F_B\)服从自由度为\((df_B,df_e)\)的F分布:\(F_A=\dfrac{MS_B}{MS_e}\)
  • 对于给定的的显著性水平\(\alpha\),查F分布表:
    \[
    F_{\alpha}(df_A,df_e) \quad \quad F_{\alpha}(df_B,df_e)
    \]
  • 如果\(F_A > F_{\alpha}(df_A,df_e)\),则认为因素A对实验结果有显著影响,否则认为因素A对实验结果没有显著影响
  • 如果\(F_B > F_{\alpha}(df_B,df_e)?\),则认为因素A对实验结果有显著影响,否则认为因素A对实验结果没有显著影响

6)无重复实验双因素方差分析表

差异源 \(SS\) \(df\) \(MS\) \(F\) 显著性
因素A \(SS_A\) \(r-1\) \(MS_A=SS_A/(r-1)\) \(MS_A/MS_e\)
因素B \(SS_B\) \(s-1\) \(MS_B=SS_B/(s-1)\) \(MS_B/MS_e\)
误差 \(SS_e\) \((r-1)(s-1)\) \(MS_e=SS_e/((r-1)(s-1))\)
总和 \(SS_T\) \(rs-1\)

双因素重复实验基本问题

  • 交互作用——因素间的联全作用称为交互作用
  • 因素间没有联合作用——相互独立,独立效应
  • 因素间有联合作用——交互作用,交互效应

双因素重复实验方差分析基本步骤

1)计算平均值

  • 组合水平\((A_i,B_i)\)上的\(c\)次实验值的算术平均值

\[
\overline{x}_{ij{\cdot}}=\frac{1}{c}\sum_{k=1}^{c}{x_{ijk}},i=1,2,\cdots,r;j=1,2,\cdots,s
\tag{16}
\]

  • \(A_i\)水平时所有实验值的算术平均值:
    \[
    \overline{x}_{i\cdot\cdot} = \frac{1}{sc}\sum_{j=1}^{s}x_{ijk} = \frac{1}{s}\sum_{j=1}^{s}x_{ijk},i=1,2,\cdots,r
    \tag{17}
    \]
  • \(B_j\)水平时:

\[
\overline{x}_{i\cdot\cdot} = \frac{1}{rc}\sum_{j=1}^{s}x_{ijk} = \frac{1}{r}\sum_{j=1}^{r}x_{ij\cdot},j=1,2,\cdots,s
\tag{18}
\]

  • 所有实验的总平均值:

\[
\overline{x} = \frac{1}{rsc} \sum_{i=1}^{r}\sum_{j=1}^{s}\sum_{k=1}^{c}x_{ijk}
\tag{19}
\]

2)计算离差平方和

  • 总离差平方和:
    \[
    SS_T=\frac{1}{rsc}\sum_{i=1}^{r}\sum_{j=1}^{s}\sum_{k=1}^{c}{(x_{ijk}-\overline{x})^2} = SS_A+SS_B+SS_{A\times{B}}+SS_e
    \tag{20}
    \]
  • \(SS_A\)为A引起的离差平方和:
    \[
    SS_A = sc\sum_{i=1}^{r}{(\overline{x}_{i\cdot\cdot}-\overline{x})^2}
    \]
  • \(SS_B\)为B引起的离差平方和:
    \[
    SS_B = rc\sum_{j=1}^{s}{(\overline{x}_{\cdot{j}\cdot}-\overline{x})^2}
    \]
  • \(SS_{A\times{B}}\)为\(A\times{B}\)引起的离差平方和:
    \[
    SS_{A\times{B}} = c\sum_{i=1}^{r}\sum_{j=1}{s}{(\overline{x}_{ij\cdot}-\overline{x}_{i\cdot\cdot}-\overline{x}_{\cdot{j}\cdot}+\overline{x})^2}
    \]
  • \(SS_e\)为误差平方和:

\[
\overline{x} = \sum_{i=1}^{r}\sum_{j=1}^{s}\sum_{k=1}^{c}{(x_{ijk}-\overline{x}_{ij\cdot})^2}
\]

3)计算自由度

\(SS_A\)的自由度 \(SS_B\)的自由度 \(SS_{A\times{B}}\)的自由度 \(SS_e\)的自由度 \(SS_T\)的自由度
\(df_A=r-1\) \(df_B=s-1\) \(df_{A\times{B}}=(r-1)(n-1)\) \(df_e=rs(c-1)\) \(df_T=n-1=rsc-1\)

4)计算均方

A均方 B均方 \(A\times{B}\)均方 e均方
\(MS_A=\dfrac{SS_A}{df_A}=\dfrac{SS_A}{r-1}\) \(MS_B=\dfrac{SS_B}{df_A}=\dfrac{SS_B}{s-1}\) \(MS_{A\times{B}}=\dfrac{SS_{A\times{B}}}{(r-1)(s-1)}\) \(MS_e=\dfrac{SS_e}{df_e}=\dfrac{SS_e}{rs(c-1)}\)

5)F 检验

  • \(F_A\)服从自由度为\((df_A,df_e)\)的F分布:\(F_A=\dfrac{MS_A}{MS_e}\)
  • \(F_B\)服从自由度为\((df_B,df_e)\)的F分布:\(F_A=\dfrac{MS_B}{MS_e}\)
  • \(F_{A\times{B}}\)服从自由度为\((df_{A\times{B}},df_e)\)的F分布:\(F_A=\dfrac{MS_{A\times{B}}}{MS_e}\)
  • 对于给定的的显著性水平\(\alpha\),查F分布表:
    \[
    F_{\alpha}(df_A,df_e) \quad \quad F_{\alpha}(df_B,df_e) \quad \quad F_{\alpha}(df_{A\times{B}},df_e)
    \]
  • 如果\(F_A > F_{\alpha}(df_A,df_e)\),则认为因素A对实验结果有显著影响,否则认为因素A对实验结果没有显著影响
  • 如果\(F_B > F_{\alpha}(df_B,df_e)\),则认为因素B对实验结果有显著影响,否则认为因素B对实验结果没有显著影响
  • 如果\(F_{A\times{B}}> F_{\alpha}(df_{A\times{B}},df_e)\),则认为交互作用\[A\times{B}\]对实验结果有显著影响,否则认为因素\(A\times{B}\)对实验结果没有显著影响

6)重复实验双因素方差分析表

差异源 \(SS\) \(df\) \(MS\) \(F\) 显著性
因素A \(SS_A\) \(r-1\) \(MS_A=SS_A/(r-1)\) \(MS_A/MS_e\)
因素B \(SS_B\) \(s-1\) \(MS_B=SS_B/(s-1)\) \(MS_B/MS_e\)
交互作用 \(SS_{A\times{B}}\) \((r-1)(s-1)\) \(MS_{A\times{B}}=\dfrac{SS_{A\times{B}}}{(r-1)(s-1)}\) \(MS_{A\times{B}}/MS_e\)
误差 \(SS_e\) \(rs(c-1)\) \(MS_c=SS_e/(rs(c-1))\)
总和 \(SS_T\) \(rsc-1\)

R语言方差分析

R语言重复实验方差分析

例:下表中给出了某种化式产品在3种浓度、4种温度水平下得率的数据,试检验各因素及交互作用对产品得率的影响是否显著。

浓度/% 10℃ 24℃ 38℃ 52℃
2 14,11 11,11 13,9 10,12
4 9,7 10,8 7,11 6,10
6 5,11 13,14 12,13 14,10

我们令:A因素:浓度,B因素:温度,由题可得,重复次数\(c=2\)

可以分析出如下表:

\((c_1,c_2)\) \(B_1\) \(B_2\) \(B_3\) \(B_4\)
浓度/% 10℃ 24℃ 38℃ 52℃
\(A_1\) 2 14,11 11,11 13,9 10,12
\(A_2\) 4 9,7 10,8 7,11 6,10
\(A_3\) 6 5,11 13,14 12,13 14,10

接下来,我们在RStudio(如果RStudio没有安装的,网上有大量的教程)中录入我们的数据,代码如下

X <- c(14,9,5,11,10,13,13,7,12,10,6,14,10,7,11,11,8,14,9,11,13,12,10,10)
chemistryProduct<-data.frame(X,A=gl(3,1,24),B=gl(4,3,24),c=gl(12,1,24))
chemistryProduct.aov<-aov(X~A*B,data = chemistryProduct)
summary(chemistryProduct.aov)

说明:对上述代码的第1行和第2行简单说明一下。
第1行中,X数据的输入,是以列的方向输入,先输入第1次实验的数据,输入完成后再按第1次的顺序输入第2次实验数据。

第2行中,A=gl(3,1,24),第一个数3表示有3行,第二个数1表示行方向只增加1,第三个数24表示总共有24个数据。后面的同理。可以查看一下它的输出如下,不难发现其中的输入规律。

可以在RStudio中查看chemistryProduct的数据结构,多试一下,自行体会一下其中的A,B,c的规律。

> chemistryProduct
    X A B  c
1  14 1 1  1
2   9 2 1  2
3   5 3 1  3
4  11 1 2  4
5  10 2 2  5
6  13 3 2  6
7  13 1 3  7
8   7 2 3  8
9  12 3 3  9
10 10 1 4 10
11  6 2 4 11
12 14 3 4 12
13 10 1 1  1
14  7 2 1  2
15 11 3 1  3
16 11 1 2  4
17  8 2 2  5
18 14 3 2  6
19  9 1 3  7
20 11 2 3  8
21 13 3 3  9
22 12 1 4 10
23 10 2 4 11
24 10 3 4 12

可以看到如下输出结果:

            Df Sum Sq Mean Sq F value Pr(>F)
A            2  44.33  22.167   4.092 0.0442 *
B            3  11.50   3.833   0.708 0.5657
A:B          6  27.00   4.500   0.831 0.5684
Residuals   12  65.00   5.417
---
Signif. codes:
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

将实验结果写成上文所述的方差分析表,如下

差异源 \(df\) \(SS\) \(MS\) \(F\) 显著性
因素A 2 44.33 22.167 4.092 *
因素B 3 11.50 3.833 0.708
交互作用 6 27.00 4.500 0.831
误差 12 65.00 5.417
总和

由分析结果可知,因素A对产品得率有显著性影响。

原文地址:https://www.cnblogs.com/endlesscoding/p/9863790.html

时间: 2024-08-02 11:36:55

实验的方差分析(R语言)的相关文章

R语言实战(五)方差分析与功效分析

本文对应<R语言实战>第9章:方差分析:第10章:功效分析 ==================================================================== 方差分析: 回归分析是通过量化的预测变量来预测量化的响应变量,而解释变量里含有名义型或有序型因子变量时,我们关注的重点通常会从预测转向组别差异的分析,这种分析方法就是方差分析(ANOVA).因变量不只一个时,称为多元方差分析(MANOVA).有协变量时,称为协方差分析(ANCOVA)或多元协方差分析

R语言统计分析-方差分析

R语言统计分析-方差分析 一.方差分析简单的例子 测试6中杀虫剂的效果,目标值为虫子个数,对方差进行分析. 1.导入数据 data(InsectSprays) 2.平方根转换,分析 aov.spray <- aov(sqrt(count) ~ spray, data = InsectSprays) aov()左边为左边相应变量,右边预测变量. 等价于 > aov.spray <- aov(sqrt(InsectSprays$count) ~ InsectSprays$spray) 知道编

R语言——实验4-人工神经网络(更新中)

带包实现: rm(list=ls()) setwd("C:/Users/Administrator/Desktop/R语言与数据挖掘作业/实验4-人工神经网络") Data=read.csv("sales_data.csv")[,2:5] library(nnet) colnames(Data)<-c("x1","x2","x3","y") model1=nnet(y~.,data

R语言- 实验报告 - 数据清洗

一. 实训内容 能对基本的开发环境进行检验和错误排查,以及对新语言软件进行安装. 能使用Navicat for MySQL对MySQL数据库进行基本的连接测试,同时,在mysql中新建student数据库.能利用外部SQL脚本文件对数据库进行数据集的导入和初始化. 熟悉利用eclipse编程工具,新建项目和工具类对mysql数据库进行相应的操作,以及从该项目中导出可执行的jar文件. 利用R-3.6.1-win.exe运行,导出的可执行的jar文件.并编写一个“数据清洗.r”脚本文件,对C:\

独立成分分析(ICA)的模拟实验(R语言)

本笔记是ESL14.7节图14.42的模拟过程.第一部分将以ProDenICA法为例试图介绍ICA的整个计算过程:第二部分将比较ProDenICA.FastICA以及KernelICA这种方法,试图重现图14.42. ICA的模拟过程 生成数据 首先我们得有一组独立(ICA的前提条件)分布的数据\(S\)(未知),然后经过矩阵\(A_0\)混合之后得到实际的观测值\(X\),即 \[ X= SA_0 \] 也可以写成 \[ S=XA_0^{-1} \] 用鸡尾酒酒会的例子来说就是,来自不同个体的

数据分析,R语言

数据结构 创建向量和矩阵 1 函数c(), length(), mode(), rbind(), cbind() 求平均值,和,连乘,最值,方差,标准差 1 函数mean(), sum(), min(), max(), var(), sd(), prod() 帮助文档 1 函数help() 生成向量 1 seq() 生成字母序列letters 新建向量 1 Which()函数,rev()函数,sort()函数 生成矩阵 1 函数matrix() 矩阵运算 1 函数t(),矩阵加减 矩阵运算 1

机器学习 1、R语言

R语言 R是用于统计分析.绘图的语言和操作环境.R是属于GNU系统的一个自由.免费.源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具. 特点介绍 •主要用于统计分析.绘图.数据挖掘 •R内置多种统计学及数字分析功能.R的功能也可以通过安装包(Packages,用户撰写的功能)增强. •因为S的血缘,R比其他统计学或数学专用的编程语言有更强的面向对象(面向对象程序设计)功能 官网:http://cran.r-project.org/ 其他介绍 •R的另一强项是绘图功能,制图具有印刷的素质

用蒙特卡洛方法计算派-python和R语言

用蒙特卡洛方法算pi-基于python和R语言 最近follow了MOOC上一门python课,开始学Python.同时,买来了概率论与数理统计,准备自学一下统计.(因为被鄙视过不是统计专业却想搞数据分析) 有趣的是书里面有一块讲蒲丰投针计算Pi,这是一种随机模拟法,也就是蒙特卡洛法.蒲丰投针之于我太难,暂时没想到怎么用计算机模拟这一过程. python课中,老师也提到用随机模拟法,也就是蒙特卡洛法(MonteCarlo),用计算机模拟几千次实验,计算pi的近似值.好巧. 就拿python课中的

[译]用R语言做挖掘数据《七》

时间序列与数据挖掘 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到: 1. LX终端(LXTerminal): Linux命令行终端,打开后会进入Bash环境,可以使用Linux命令2. GVim:非常好用的编辑器,最简单的用法可以参考课程Vim编辑器3. R:在命令行输入‘R’进入交互式环境,下面的代码都是在交互式环境运行4. 数据:在命令行终端输入以下命令: