1
\$\begingroup\$

I have a procedure for conducting ANOVA, the details of which can be viewed in this white paper.

I would like to be able to make the routine scalable to handle any number of groups. Below is the R code for a 2 group example. Any insights or comments are appreciated.

Partial Moments:

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)
}

ANOVA:

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))

}
\$\endgroup\$

1 Answer 1

1
\$\begingroup\$

Per the answer to this question, storing the variables into a matrix works.

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))

}
\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.