我有一个进行方差分析的程序,其细节可以在这份白皮书上查看。
我希望能够使例程可伸缩,以处理任意数量的组。下面是一个2组示例的R代码。如有任何见解或评论,敬请见谅。
部分时刻:
LPM<- function(degree,target,variable){
sum((target - (variable[variable < target]))^degree)/length(variable)
}
UPM<- function(degree,target,variable){
sum(((variable[variable > target]) - target)^degree)/length(variable)
}阿诺瓦:
VN_ANOVA<- function(group1,group2){
mean_of_means <- mean(c(mean(group1),mean(group2)))
#Continuous CDF for each group from Mean of Means
LPM_ratio_1 <- LPM(1,mean_of_means,group1)/
(LPM(1,mean_of_means,group1)+UPM(1,mean_of_means,group1))
LPM_ratio_2 <- LPM(1,mean_of_means,group2)/
(LPM(1,mean_of_means,group2)+UPM(1,mean_of_means,group2))
#Continuous CDF Deviation from 0.5
MAD_CDF<- mean(c(abs(LPM_ratio_1 - 0.5),abs(LPM_ratio_2 - 0.5)))
#Certainty associated with samples
VN_ANOVA_rho <- (0.5 - MAD_CDF)/0.5
#Graphs
boxplot(list(group1,group2), las=2, names=c("Group 1","Group 2"),
xlab= "Means", horizontal = TRUE,
col=c("grey","white"), main="ANOVA")
#For ANOVA Visualization
abline(v=mean_of_means,col="red",lwd=4)
text(mean_of_means,pos=4, 2.5, "Mean of means", col = "red")
return(c("Certainty of Same Population"=VN_ANOVA_rho))
}发布于 2015-08-18 13:53:54
根据这个问题的答案,将变量存储到矩阵中是可行的。
VN_ANOVA<- function(A){
mean_of_means <- mean(colMeans(A))
n<- ncol(A)
LPM_ratio = numeric(0L)
MAD_CDF = numeric(0L)
#Continuous CDF for each variable from Mean of Means
for (i in 1:n){
LPM_ratio[i] <- LPM(1,mean_of_means,A[,i])/
(LPM(1,mean_of_means,A[,i])+UPM(1,mean_of_means,A[,i]))
#Continuous CDF Deviation from 0.5
MAD_CDF[i]<- abs(LPM_ratio[i] - 0.5)
}
Mean_MAD_CDF <- mean(MAD_CDF)
#Certainty associated with samples
VN_ANOVA_rho <- (0.5 - Mean_MAD_CDF)/0.5
#Graphs
boxplot(A, las=2, xlab= "Means", horizontal = TRUE,
main="ANOVA", col=rainbow(n))
#For ANOVA Visualization
abline(v=mean_of_means,col="red",lwd=4)
text(mean_of_means,pos=4, .25,"Mean of means", col = "red")
return(c("Certainty of Same Population"=VN_ANOVA_rho))
}https://codereview.stackexchange.com/questions/99194
复制相似问题