经管之家送您一份
应届毕业生专属福利!
求职就业群
感谢您参与论坛问题回答
经管之家送您两个论坛币!
+2 论坛币
- aov.func <- function(data,alpha=0.05,plot.logic=T,p.adjust.mod="holm"){
- error <- FALSE
- data[,1]<- as.factor(data[,1])
- group.levles <- as.numeric(levels(data[,1])) #分类变量的水平取值
- #检验不同水平下指标的正态性
- for(i in group.levles){
- if(shapiro.test(data[which(data[,1]==i),2])$p.value<alpha){
- print(paste("ERROR:第",i,"组数据不服从正态分布"))
- error<-TRUE
- }
- }
- if(error){
- return()
- }else{
- print("符合正态性前提!")
- }
- #检验不同水平下指标的方差齐次
- if(bartlett.test(data[,2]~data[,1])$p.value<alpha){
- print("ERROR:不符合方差齐性前提")
- return()
- }else{
- print("符合方差齐性前提!")
- }
-
- #绘制箱线图
- if(plot.logic){
- boxplot(data[,2]~data[,1])
- }
-
- #方差分析
- sol <- aov(data[,2]~data[,1])
- p.value <- summary(sol)[[1]][,5][1]
- tab<-matrix(NA,nrow=3,ncol=5)
- dimnames(tab)<- list(c("分类变量","随机性误差","总和"),c("自由度","差异平方和","均方","统计量F","p-value"))
- tab[1:2,1]<-summary(sol)[[1]][,1];tab[3,1]<-sum(tab[1:2,1])#自由度
- tab[1:2,2]<-summary(sol)[[1]][,2];tab[3,2]<-sum(tab[1:2,2])#差异平方和
- tab[1:2,3]<-summary(sol)[[1]][,3];#均方
- tab[1:2,4]<-Summary(sol)[[1]][,4];#统计量F
- tab[1,5]<-p.value;
- print("======方差分析=====")
- print(tab)
-
- #多重T检验
- if(p.value<alpha){
- print(paste(p.value,"<",alpha,":各水平下的指标有明显差别!"))
- sol.t<-pairwise.t.test(data[,2],data[,1],p.adjust.method = p.adjust.mod)
- tab<sol.t[[3]]
- tab[which((sol.t[[3]]>alpha)==TRUE)]<-"无差别"
- tab[which((sol.t[[3]]>alpha)==FALSE)]<-"显著差别"
- print("========多重T检验========")
- print(tab)
-
- }else{
- print(paste(p.value,">",alpha,":各水平下的指标无明显差别!"))
- }
- return(sol)
- }
- #创建数据,实验之前所写函数
- kpi <- c(rnorm(20,80,5),rnorm(25,195,5),rnorm(23,256,5))
- group<-c(rep(1,20),rep(2,25),rep(3,23))
- data <- data.frame(group,kpi)
- aov.func(data)
复制代码结果最后一句 aov.func(data)出现了如下错误
- Error in (function (classes, fdef, mtable) : unable to find an inherited method for function ‘Summary’ for signature ‘"aov"’
复制代码不知道啥原因,望高手们赐教啊
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
|