如图 ,从一个5列的数据里,通过自己写的qqmultinorm函数得到的图,图中是经验分布函数的100个p值与[0,1]均匀分布的经验分布函数的比较。从这张图可以看出此数据集是多变量正态吗?
我已经用shapiro检验了,其中4个符合正态分布,1个不符合。。
贴一下这个函数的代码:
> qqmultinorm <- function(x,nproj=50,scale=T,plot.qq=F,plot.edf=F) {
+ p <- ncol(x)
+ if(scale) x <- scale(x,center=T,scale=T)
+ if(plot.qq) devAskNewPage(ask = T)
+ pvals <- NULL
+ for (i in 1:nproj) {
+ a <- rnorm(p)
+ a <- a/sqrt(sum(a^2))
+ y <- as.vector(x%*%a)
+ if (plot.qq) qqnorm(y)
+ r <- shapiro.test(y)
+ pvals <- c(pvals,r$p.value)
+ }
+ if (plot.edf) {
+ plot(ecdf(pvals),xlab="p-values",ylab="probability",
+ main=" ")
+ abline(0,1,lwd=2)
+ }
+ pvals
+ }
> r = qqmultinorm(cbind(mec,vec,alg,ana,sta),nproj=100,plot.edf = T)
附件列表