楼主: A蓝白红
1597 0

[问答] 自建了一个函数进行单因素方差分析,结果运行出错了 [推广有奖]

  • 2关注
  • 0粉丝

本科生

59%

还不是VIP/贵宾

-

威望
0
论坛币
256 个
通用积分
1.0500
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
934 点
帖子
43
精华
0
在线时间
156 小时
注册时间
2011-11-8
最后登录
2025-12-17

楼主
A蓝白红 发表于 2017-8-8 08:54:27 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
  1. aov.func <- function(data,alpha=0.05,plot.logic=T,p.adjust.mod="holm"){
  2.   error <- FALSE
  3.   data[,1]<- as.factor(data[,1])
  4.   group.levles <- as.numeric(levels(data[,1])) #分类变量的水平取值
  5.   #检验不同水平下指标的正态性
  6.   for(i in group.levles){
  7.     if(shapiro.test(data[which(data[,1]==i),2])$p.value<alpha){
  8.       print(paste("ERROR:第",i,"组数据不服从正态分布"))
  9.       error<-TRUE
  10.     }
  11.   }
  12.   if(error){
  13.     return()
  14.   }else{
  15.     print("符合正态性前提!")
  16.   }
  17.   #检验不同水平下指标的方差齐次
  18.   if(bartlett.test(data[,2]~data[,1])$p.value<alpha){
  19.     print("ERROR:不符合方差齐性前提")
  20.     return()
  21.   }else{
  22.     print("符合方差齐性前提!")
  23.   }
  24.   
  25.   #绘制箱线图
  26.   if(plot.logic){
  27.     boxplot(data[,2]~data[,1])
  28.   }
  29.   
  30.   #方差分析
  31.   sol <- aov(data[,2]~data[,1])
  32.   p.value <- summary(sol)[[1]][,5][1]
  33.   tab<-matrix(NA,nrow=3,ncol=5)
  34.   dimnames(tab)<- list(c("分类变量","随机性误差","总和"),c("自由度","差异平方和","均方","统计量F","p-value"))
  35.   tab[1:2,1]<-summary(sol)[[1]][,1];tab[3,1]<-sum(tab[1:2,1])#自由度
  36.   tab[1:2,2]<-summary(sol)[[1]][,2];tab[3,2]<-sum(tab[1:2,2])#差异平方和
  37.   tab[1:2,3]<-summary(sol)[[1]][,3];#均方
  38.   tab[1:2,4]<-Summary(sol)[[1]][,4];#统计量F
  39.   tab[1,5]<-p.value;
  40.   print("======方差分析=====")
  41.   print(tab)
  42.   
  43.   #多重T检验
  44.   if(p.value<alpha){
  45.     print(paste(p.value,"<",alpha,":各水平下的指标有明显差别!"))
  46.     sol.t<-pairwise.t.test(data[,2],data[,1],p.adjust.method = p.adjust.mod)
  47.     tab<sol.t[[3]]
  48.     tab[which((sol.t[[3]]>alpha)==TRUE)]<-"无差别"
  49.     tab[which((sol.t[[3]]>alpha)==FALSE)]<-"显著差别"
  50.     print("========多重T检验========")
  51.     print(tab)
  52.    
  53.   }else{
  54.     print(paste(p.value,">",alpha,":各水平下的指标无明显差别!"))
  55.   }
  56.   return(sol)
  57. }

  58. #创建数据,实验之前所写函数
  59. kpi <- c(rnorm(20,80,5),rnorm(25,195,5),rnorm(23,256,5))
  60. group<-c(rep(1,20),rep(2,25),rep(3,23))
  61. data <- data.frame(group,kpi)
  62. aov.func(data)
复制代码
结果最后一句aov.func(data)出现了如下错误
  1. Error in (function (classes, fdef, mtable) : unable to find an inherited method for function ‘Summary’ for signature ‘"aov"’
复制代码
不知道啥原因,望高手们赐教啊
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:单因素方差分析 方差分析 运行出错 单因素 Fun R语言

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-20 15:34