《R语言实战》自学笔记57-ANOVA模型拟合

Python010

《R语言实战》自学笔记57-ANOVA模型拟合,第1张

虽然ANOVA和回归方法都是独立发展而来,但是从函数形式上看,它们都是广义线性模型

的特例。

aov(formula, data = dataframe)

表中y是因变量,字母A、B、C代表因子。

表中小写字母表示定量变量,大写字母表示组别因子,Subject是对被试者独有的标识变量。

表达式中效应的顺序在两种情况下会造成影响:

(a)因子不止一个,并且是非平衡设计;

(b)存在协变量。出现任意一种情况时,等式右边的变量都与其他每个变量相关。此时,我们无法清晰地划分它们对因变量的影响。

R默认类型I(序贯型)方法计算ANOVA效应(参考补充内容“顺序很重要!”)。可以这样写:y ~ A + B + A:B。

R中的ANOVA表的结果将评价:

 A对y的影响;

控制A时,B对y的影响;

控制A和B的主效应时,A与B的交互效应。

样本大小越不平衡,效应项的顺序对结果的影响越大。一般来说,越基础性的效应越需要放在表达式前面。具体来讲,首先是协变量,然后是主效应,接着是双因素的交互项,再接着是三因素的交互项,以此类推。对于主效应,越基础性的变量越应放在表达式前面,因此性别要放在处理方式之前。有一个基本的准则:若研究设计不是正交的(也就是说,因子和/或协变量相关),一定要谨慎设置效应的顺序。

参考资料:

R语言中的多元方差分析1、当因变量(结果变量)不止一个时,可用多元方差分析(MANOVA)对它们同时进行分析。library(MASS)attach(UScereal)y <- cbind(calories, fat, sugars)aggregate(y, by = list(shelf), FUN = mean)Group.1 calories fatsugars1 1 119.4774 0.6621338 6.2954932 2 129.8162 1.3413488 12.5076703 3 180.1466 1.9449071 10.856821cov(y)calories fat sugarscalories 3895.24210 60.674383 180.380317fat60.67438 2.713399 3.995474sugars180.38032 3.995474 34.050018fit <- manova(y ~ shelf)summary(fit)Df Pillai approx F num Df den Df Pr(>F) shelf 1 0.195944.955 3 61 0.00383 **Residuals 63 ---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1summary.aov(fit)Response calories :Df Sum Sq Mean Sq F valuePr(>F)shelf1 45313 45313 13.995 0.0003983 ***Residuals 63 2039823238 ---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1Response fat :Df Sum Sq Mean Sq F value Pr(>F) shelf1 18.421 18.4214 7.476 0.008108 **Residuals 63 155.236 2.4641---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1Response sugars :Df Sum Sq Mean Sq F value Pr(>F) shelf1 183.34 183.34 5.787 0.01909 *Residuals 63 1995.87 31.68 ---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 12、评估假设检验单因素多元方差分析有两个前提假设,一个是多元正态性,一个是方差—协方差矩阵同质性。(1)多元正态性第一个假设即指因变量组合成的向量服从一个多元正态分布。可以用Q-Q图来检验该假设条件。center <- colMeans(y)n <- nrow(y)p <- ncol(y)cov <- cov(y)d <- mahalanobis(y, center, cov)coord <- qqplot(qchisq(ppoints(n), df = p), d, main = "QQ Plot Assessing Multivariate Normality", ylab = "Mahalanobis D2")abline(a = 0, b = 1)identify(coord$x, coord$y, labels = row.names(UScereal))如果所有的点都在直线上,则满足多元正太性。2、方差—协方差矩阵同质性即指各组的协方差矩阵相同,通常可用Box’s M检验来评估该假设3、检测多元离群点library(mvoutlier)outliers <- aq.plot(y)outliers