R语言之方差分析篇( 三 )


R语言之方差分析篇

文章插图
数据集
宽格式(wide ):列是变量,行是观测值,且一行一个受试对象
处理重复测量设计时,需要有长格式(long )数据才能拟合模型;在长格式中,因变量每次测量都要放到它独有的行中 。包可为人正直将数据转换为相应的格式 。
6、多元方差分析(1)单因素多元方差分析
library(MASS)head(UScereal)attach(UScereal)y<-cbind(calories,fat,sugars)aggregate(y,by=list(shelf),FUN=mean)cov(y)fit<-manova(y~shelf)summary(fit)summary.aov(fit)
R语言之方差分析篇

文章插图
(2)评估假设检验
单因素多元方差分析有两个前提假设,一个是多元正态性,一个是方差-协方差同质性 。前者可用Q-Q图来检验该假设条件;方差-协方差矩阵同持性即指各组的协方差矩阵相同,可用Box's M检验来估计该假设 。
多元正态分布:若有一个p*1的多元正态随机向量x,均值为u,存在协方差矩阵,那么x与u的马氏距离的平方服从自由度为p的卡方分布 。
Q-Q图展示卡方颁的分位数,横纵坐标分别是样本量与马氏距离平方值 。如果点全部落在斜率为1、截距为0的直线上,则表明数据服从多元
正态分布 。
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="Q-Q Plot Assessing Multivariate Normality",ylab="Mahalanobis D2")abline(a=0,b=1)identify(coord$x,coord$y,labels=row.names(UScereal))
R语言之方差分析篇

文章插图
可用包中的ap.plot()函数来检验多元离群点
install.packages("mvoutlier")library(mvoutlier)outliers<-aq.plot(y)outliers
R语言之方差分析篇

文章插图
(3)稳健多元方差分析
若多元正态性或者方差-协方差均值假设都不满足,又担心多元离群点,可考虑用稳健或非参版本的检验 。
rrcov包中的Wilks.test()函数实现
vegan包中的()函数提供了非参数的等同形式
library(rrcov)Wilks.test(y,shelf,method="mcd")
R语言之方差分析篇

文章插图
7、用回归来做ANOVA
用aov()函数拟合模型
library(multcomp)levels(cholesterol$trt)fit.aov<-aov(response~trt,data=http://www.kingceram.com/post/cholesterol)summary(fit.aov)
R语言之方差分析篇

文章插图
用回归lm()来解决ANOVA问题
fit.lm<-lm(response~trt,data=http://www.kingceram.com/post/cholesterol)summary(fit.lm)
R语言之方差分析篇

文章插图
因线性模型要求预测变量是数值型,当lm()函数碰到因子时,它会用一系列因子水平相对应的数值型对照变量为代替因子 。若因子有k个水平,它将会创建k-1个对照变量 。
contrasts(cholesterol$trt)
R语言之方差分析篇

文章插图
内置对照组
对照变量创建方法
描述
contr.
第二个与第一个水平对照
第三个水平对照前两个均值
第四个水平对照前三个的均值
contr.poly