###########配伍组设计的方差分析 library(foreign) df<-read.csv("C:\\Users\\Lenovo\\Desktop\\pwz.rbd.csv")###从excel调取数据 #######给出置信水平 alpha<-c(0.01,0.05) #############计算离均差平方和SS SS<-(sum(df**2)-(sum(df)**2/n))#####SS总 SS1<-(sum(colSums(df)**2))/nrow(df)-(sum(df)**2/n)#####SS因素间 SS2<-(sum(rowSums(df)**2))/ncol(df)-(sum(df)**2/n)######SS区组间 SS3<-SS-SS1-SS2 ############计算均方MS MS1<-SS1/(length(df)-1) MS2<-SS2/(nrow(df)-1) MS3<-SS3/((ncol(df)-1)*(nrow(df)-1)) ###########计算F值 F1<-MS1/MS3 F2<-MS2/MS3 #####计算样本含量 length.n<-sapply(df,length) for(i in seq_along(length.n)){ assign(paste0("n",i),length.n[i]) } n<-sum(sapply(df,length)) ###########建立随机区组设计的方差分析表 df.byfj<-data.frame("自由度"=c((n-1),(ncol(df)-1),(nrow(df)-1), ((ncol(df)-1)*(nrow(df)-1))),"平方和SS"=c(SS,SS1,SS2,SS3),"均方MS"=c(0,MS1,MS2,MS3), "F"=c(0,F1,F2,0)) rownames(df.byfj)<-c("总变异","因素间","区组内","误差") ###########查询对应F值临界表 F1.<-qf(1-alpha,(ncol(df)-1),((ncol(df)-1)*(nrow(df)-1))) F2.<-qf(1-alpha,(nrow(df)-1),((ncol(df)-1)*(nrow(df)-1))) ###########与F值做比较 if(F1>F1.[2]) print("拒绝H0,接受H1","有显著差异") else print("接受H0.,拒绝H1.","无显著差异") df.byfj
时间: 2023-06-18 19:06:21 浏览: 174
bitcarmanlee#easy-algorithm-interview-and-practice#python 计算均值 方
这段代码是进行随机区组设计的方差分析,主要是为了判断不同组别之间的差异是否显著。首先从Excel中调取数据,然后计算离均差平方和SS,以及因素间的SS1、区组间的SS2和误差的SS3。接着计算均方MS和F值,并建立随机区组设计的方差分析表。最后,查询对应F值临界表并与F值做比较,判断是否有显著差异。代码中的置信水平alpha取值为0.01和0.05,可以根据需要进行修改。
阅读全文