#To replicate our study set in the following command (i.e., setwd) the path in which you saved the working dataset file downloaded from our online appendix (i.e., WorkingDataset) setwd("/Users/Gabriele/Dropbox/Android Project/Online Appendix") #Load Data rawData<-read.table("WorkingDataset",sep=",",header=TRUE) #Group the apps based on their average users rating rawData_4<- rawData[which(rawData["mean"] > 4),] rawData_3 <- rawData[which(rawData["mean"] <= 4 & rawData["mean"] > 3),] rawData_2 <- rawData[which(rawData["mean"] <= 3 & rawData["mean"] > 2),] rawData_1 <- rawData[which(rawData["mean"] <= 2),] #To print summary information about the fault- and change- #proneness of APIs used by apps having different average rating #FAULT-PRONENESS #Apps having average rating > 4 summary(rawData_4$Bugs) #Apps having average rating > 3 and <=4 summary(rawData_3$Bugs) #Apps having average rating > 2 and <=3 summary(rawData_2$Bugs) #Apps having average rating <= 2 summary(rawData_1$Bugs) #CHANGE-PRONENESS: OVERALL CHANGES TO METHODS #Apps having average rating > 4 summary(rawData_4$ChangedM) #Apps having average rating > 3 and <=4 summary(rawData_3$ChangedM) #Apps having average rating > 2 and <=3 summary(rawData_2$ChangedM) #Apps having average rating <= 2 summary(rawData_1$ChangedM) #CHANGE-PRONENESS: OVERALL CHANGES TO PUBLIC METHODS #Apps having average rating > 4 summary(rawData_4$ChangedPM) #Apps having average rating > 3 and <=4 summary(rawData_3$ChangedPM) #Apps having average rating > 2 and <=3 summary(rawData_2$ChangedPM) #Apps having average rating <= 2 summary(rawData_1$ChangedPM) #CHANGE-PRONENESS: CHANGES TO METHOD SIGNATURES #Apps having average rating > 4 summary(rawData_4$MwithSignatureModified) #Apps having average rating > 3 and <=4 summary(rawData_3$MwithSignatureModified) #Apps having average rating > 2 and <=3 summary(rawData_2$MwithSignatureModified) #Apps having average rating <= 2 summary(rawData_1$MwithSignatureModified) #CHANGE-PRONENESS: CHANGES TO PUBLIC METHOD SIGNATURES #Apps having average rating > 4 summary(rawData_4$PMwithSignatureModified) #Apps having average rating > 3 and <=4 summary(rawData_3$PMwithSignatureModified) #Apps having average rating > 2 and <=3 summary(rawData_2$PMwithSignatureModified) #Apps having average rating <= 2 summary(rawData_1$PMwithSignatureModified) #CHANGE-PRONENESS: CHANGES TO EXCEPTIONS THROWN BY METHODS #Apps having average rating > 4 summary(rawData_4$MwithChangesInExceptions) #Apps having average rating > 3 and <=4 summary(rawData_3$MwithChangesInExceptions) #Apps having average rating > 2 and <=3 summary(rawData_2$MwithChangesInExceptions) #Apps having average rating <= 2 summary(rawData_1$MwithChangesInExceptions) #CHANGE-PRONENESS: CHANGES TO EXCEPTIONS THROWN BY PUBLIC METHODS #Apps having average rating > 4 summary(rawData_4$PMwithChangesInExceptions) #Apps having average rating > 3 and <=4 summary(rawData_3$PMwithChangesInExceptions) #Apps having average rating > 2 and <=3 summary(rawData_2$PMwithChangesInExceptions) #Apps having average rating <= 2 summary(rawData_1$PMwithChangesInExceptions) #TO REPRODUCE THE BOX PLOTS PRESENTED IN THE PAPER #FAULT-PRONENESS boxplot(rawData_4$Bugs, rawData_3$Bugs, rawData_2$Bugs, rawData_1$Bugs, col="gray", boxwex = 0.25, at = 1:4 - 0.0, names = c("> 4","< 3 and <= 4", "< 2 and <= 3", "<= 2"), ylim = c(0,55), xlab="Average app rating", ylab="Average bug-fixes in used APIs") #CHANGE-PRONENESS: OVERALL CHANGES TO METHODS boxplot(rawData_4$ChangedM, rawData_3$ChangedM, rawData_2$ChangedM, rawData_1$ChangedM, col="gray", boxwex = 0.15, at = 1:4 - 0.0, names = c("> 4","< 3 and <= 4", "< 2 and <= 3", "<= 2"), ylim = c(0,300), xlab="Average app rating", ylab="Method changes") #CHANGE-PRONENESS: OVERALL CHANGES TO PUBLIC METHODS boxplot(rawData_4$ChangedPM, rawData_3$ChangedPM, rawData_2$ChangedPM, rawData_1$ChangedPM, col="gray", boxwex = 0.15, at = 1:4 - 0.0, names = c("> 4","< 3 and <= 4", "< 2 and <= 3", "<= 2"), ylim = c(0,300), xlab="Average app rating", ylab="Public method changes") #CHANGE-PRONENESS: CHANGES TO METHOD SIGNATURES boxplot(rawData_4$MwithSignatureModified, rawData_3$MwithSignatureModified, rawData_2$MwithSignatureModified, rawData_1$MwithSignatureModified, col="gray", boxwex = 0.15, at = 1:4 - 0.0, names = c("> 4","< 3 and <= 4", "< 2 and <= 3", "<= 2"), ylim = c(0,100), xlab="Average app rating", ylab="Changes in method signatures") #CHANGE-PRONENESS: CHANGES TO PUBLIC METHOD SIGNATURES boxplot(rawData_4$PMwithSignatureModified, rawData_3$PMwithSignatureModified, rawData_2$PMwithSignatureModified, rawData_1$PMwithSignatureModified, col="gray", boxwex = 0.15, at = 1:4 - 0.0, names = c("> 4","< 3 and <= 4", "< 2 and <= 3", "<= 2"), ylim = c(0,100), xlab="Average app rating", ylab="Changes in public method signatures") #CHANGE-PRONENESS: CHANGES TO EXCEPTIONS THROWN BY METHODS boxplot(rawData_4$MwithChangesInExceptions, rawData_3$MwithChangesInExceptions, rawData_2$MwithChangesInExceptions, rawData_1$MwithChangesInExceptions, col="gray", boxwex = 0.15, at = 1:4 - 0.0, names = c("> 4","< 3 and <= 4", "< 2 and <= 3", "<= 2"), ylim = c(0,20), xlab="Average app rating", ylab="Changes in exceptions thrown by methods") #CHANGE-PRONENESS: CHANGES TO EXCEPTIONS THROWN BY METHODS boxplot(rawData_4$PMwithChangesInExceptions, rawData_3$PMwithChangesInExceptions, rawData_2$PMwithChangesInExceptions, rawData_1$PMwithChangesInExceptions, col="gray", boxwex = 0.15, at = 1:4 - 0.0, names = c("> 4","< 3 and <= 4", "< 2 and <= 3", "<= 2"), ylim = c(0,20), xlab="Average app rating", ylab="Changes in exceptions thrown by public methods") #TO PERFORM THE STATISTICAL TESTS PRESENTED IN THE PAPER install.packages("orddom") library(orddom) #FAULT-PRONENESS - APPS HAVING AVERAGE RATING > 4 vs APPS HAVING AVERAGE RATING <=4 AND > 3 #WILCOXON TEST wilcox.test(rawData_4$Bugs, rawData_3$Bugs,alternative="less",paired=FALSE) #CLIFF DELTA t1=as.matrix(rawData_4$Bugs) colnames(t1)<-c("t1") t2=as.matrix(rawData_3$Bugs) colnames(t2)<-c("t2") o<-orddom(t1,t2) cliffdelta<-o[13,1] cliffdelta #FAULT-PRONENESS - APPS HAVING AVERAGE RATING > 4 vs APPS HAVING AVERAGE RATING <=3 AND > 2 #WILCOXON TEST wilcox.test(rawData_4$Bugs, rawData_2$Bugs,alternative="less",paired=FALSE) #CLIFF DELTA t1=as.matrix(rawData_4$Bugs) colnames(t1)<-c("t1") t2=as.matrix(rawData_2$Bugs) colnames(t2)<-c("t2") o<-orddom(t1,t2) cliffdelta<-o[13,1] cliffdelta #FAULT-PRONENESS - APPS HAVING AVERAGE RATING > 4 vs APPS HAVING AVERAGE RATING <=2 #WILCOXON TEST wilcox.test(rawData_4$Bugs, rawData_1$Bugs,alternative="less",paired=FALSE) #CLIFF DELTA t1=as.matrix(rawData_4$Bugs) colnames(t1)<-c("t1") t2=as.matrix(rawData_1$Bugs) colnames(t2)<-c("t2") o<-orddom(t1,t2) cliffdelta<-o[13,1] cliffdelta #FAULT-PRONENESS - APPS HAVING AVERAGE RATING > 3 AND <=4 vs APPS HAVING AVERAGE RATING <=3 AND > 2 #WILCOXON TEST wilcox.test(rawData_3$Bugs, rawData_2$Bugs,alternative="less",paired=FALSE) #CLIFF DELTA t1=as.matrix(rawData_3$Bugs) colnames(t1)<-c("t1") t2=as.matrix(rawData_2$Bugs) colnames(t2)<-c("t2") o<-orddom(t1,t2) cliffdelta<-o[13,1] cliffdelta #FAULT-PRONENESS - APPS HAVING AVERAGE RATING > 3 AND <=4 vs APPS HAVING AVERAGE RATING <=2 #WILCOXON TEST wilcox.test(rawData_3$Bugs, rawData_1$Bugs,alternative="less",paired=FALSE) #CLIFF DELTA t1=as.matrix(rawData_3$Bugs) colnames(t1)<-c("t1") t2=as.matrix(rawData_1$Bugs) colnames(t2)<-c("t2") o<-orddom(t1,t2) cliffdelta<-o[13,1] cliffdelta #FAULT-PRONENESS - APPS HAVING AVERAGE RATING > 2 AND <=3 vs APPS HAVING AVERAGE RATING <=2 #WILCOXON TEST wilcox.test(rawData_2$Bugs, rawData_1$Bugs,alternative="less",paired=FALSE) #CLIFF DELTA t1=as.matrix(rawData_2$Bugs) colnames(t1)<-c("t1") t2=as.matrix(rawData_1$Bugs) colnames(t2)<-c("t2") o<-orddom(t1,t2) cliffdelta<-o[13,1] cliffdelta #CHANGE-PRONENESS - MODIFIED METHODS - APPS HAVING AVERAGE RATING > 4 vs APPS HAVING AVERAGE RATING <=4 AND > 3 #WILCOXON TEST wilcox.test(rawData_4$ChangedM, rawData_3$ChangedM,alternative="less",paired=FALSE) #CLIFF DELTA t1=as.matrix(rawData_4$ChangedM) colnames(t1)<-c("t1") t2=as.matrix(rawData_3$ChangedM) colnames(t2)<-c("t2") o<-orddom(t1,t2) cliffdelta<-o[13,1] cliffdelta #CHANGE-PRONENESS - MODIFIED METHODS - APPS HAVING AVERAGE RATING > 4 vs APPS HAVING AVERAGE RATING <=3 AND > 2 #WILCOXON TEST wilcox.test(rawData_4$ChangedM, rawData_2$ChangedM,alternative="less",paired=FALSE) #CLIFF DELTA t1=as.matrix(rawData_4$ChangedM) colnames(t1)<-c("t1") t2=as.matrix(rawData_2$ChangedM) colnames(t2)<-c("t2") o<-orddom(t1,t2) cliffdelta<-o[13,1] cliffdelta #CHANGE-PRONENESS - MODIFIED METHODS - APPS HAVING AVERAGE RATING > 4 vs APPS HAVING AVERAGE RATING <=2 #WILCOXON TEST wilcox.test(rawData_4$ChangedM, rawData_1$ChangedM,alternative="less",paired=FALSE) #CLIFF DELTA t1=as.matrix(rawData_4$ChangedM) colnames(t1)<-c("t1") t2=as.matrix(rawData_1$ChangedM) colnames(t2)<-c("t2") o<-orddom(t1,t2) cliffdelta<-o[13,1] cliffdelta #CHANGE-PRONENESS - MODIFIED METHODS - APPS HAVING AVERAGE RATING > 3 AND <=4 vs APPS HAVING AVERAGE RATING <=3 AND > 2 #WILCOXON TEST wilcox.test(rawData_3$ChangedM, rawData_2$ChangedM,alternative="less",paired=FALSE) #CLIFF DELTA t1=as.matrix(rawData_3$ChangedM) colnames(t1)<-c("t1") t2=as.matrix(rawData_2$ChangedM) colnames(t2)<-c("t2") o<-orddom(t1,t2) cliffdelta<-o[13,1] cliffdelta #CHANGE-PRONENESS - MODIFIED METHODS - APPS HAVING AVERAGE RATING > 3 AND <=4 vs APPS HAVING AVERAGE RATING <=2 #WILCOXON TEST wilcox.test(rawData_3$ChangedM, rawData_1$ChangedM,alternative="less",paired=FALSE) #CLIFF DELTA t1=as.matrix(rawData_3$ChangedM) colnames(t1)<-c("t1") t2=as.matrix(rawData_1$ChangedM) colnames(t2)<-c("t2") o<-orddom(t1,t2) cliffdelta<-o[13,1] cliffdelta #CHANGE-PRONENESS - MODIFIED METHODS - APPS HAVING AVERAGE RATING > 2 AND <=3 vs APPS HAVING AVERAGE RATING <=2 #WILCOXON TEST wilcox.test(rawData_2$ChangedM, rawData_1$ChangedM,alternative="less",paired=FALSE) #CLIFF DELTA t1=as.matrix(rawData_2$ChangedM) colnames(t1)<-c("t1") t2=as.matrix(rawData_1$ChangedM) colnames(t2)<-c("t2") o<-orddom(t1,t2) cliffdelta<-o[13,1] cliffdelta #CHANGE-PRONENESS - MODIFIED PUBLIC METHODS - APPS HAVING AVERAGE RATING > 4 vs APPS HAVING AVERAGE RATING <=4 AND > 3 #WILCOXON TEST wilcox.test(rawData_4$ChangedPM, rawData_3$ChangedPM,alternative="less",paired=FALSE) #CLIFF DELTA t1=as.matrix(rawData_4$ChangedPM) colnames(t1)<-c("t1") t2=as.matrix(rawData_3$ChangedPM) colnames(t2)<-c("t2") o<-orddom(t1,t2) cliffdelta<-o[13,1] cliffdelta #CHANGE-PRONENESS - MODIFIED PUBLIC METHODS - APPS HAVING AVERAGE RATING > 4 vs APPS HAVING AVERAGE RATING <=3 AND > 2 #WILCOXON TEST wilcox.test(rawData_4$ChangedPM, rawData_2$ChangedPM,alternative="less",paired=FALSE) #CLIFF DELTA t1=as.matrix(rawData_4$ChangedPM) colnames(t1)<-c("t1") t2=as.matrix(rawData_2$ChangedPM) colnames(t2)<-c("t2") o<-orddom(t1,t2) cliffdelta<-o[13,1] cliffdelta #CHANGE-PRONENESS - MODIFIED PUBLIC METHODS - APPS HAVING AVERAGE RATING > 4 vs APPS HAVING AVERAGE RATING <=2 #WILCOXON TEST wilcox.test(rawData_4$ChangedPM, rawData_1$ChangedPM,alternative="less",paired=FALSE) #CLIFF DELTA t1=as.matrix(rawData_4$ChangedPM) colnames(t1)<-c("t1") t2=as.matrix(rawData_1$ChangedPM) colnames(t2)<-c("t2") o<-orddom(t1,t2) cliffdelta<-o[13,1] cliffdelta #CHANGE-PRONENESS - MODIFIED PUBLIC METHODS - APPS HAVING AVERAGE RATING > 3 AND <=4 vs APPS HAVING AVERAGE RATING <=3 AND > 2 #WILCOXON TEST wilcox.test(rawData_3$ChangedPM, rawData_2$ChangedPM,alternative="less",paired=FALSE) #CLIFF DELTA t1=as.matrix(rawData_3$ChangedPM) colnames(t1)<-c("t1") t2=as.matrix(rawData_2$ChangedPM) colnames(t2)<-c("t2") o<-orddom(t1,t2) cliffdelta<-o[13,1] cliffdelta #CHANGE-PRONENESS - MODIFIED PUBLIC METHODS - APPS HAVING AVERAGE RATING > 3 AND <=4 vs APPS HAVING AVERAGE RATING <=2 #WILCOXON TEST wilcox.test(rawData_3$ChangedPM, rawData_1$ChangedPM,alternative="less",paired=FALSE) #CLIFF DELTA t1=as.matrix(rawData_3$ChangedPM) colnames(t1)<-c("t1") t2=as.matrix(rawData_1$ChangedPM) colnames(t2)<-c("t2") o<-orddom(t1,t2) cliffdelta<-o[13,1] cliffdelta #CHANGE-PRONENESS - MODIFIED PUBLIC METHODS - APPS HAVING AVERAGE RATING > 2 AND <=3 vs APPS HAVING AVERAGE RATING <=2 #WILCOXON TEST wilcox.test(rawData_2$ChangedPM, rawData_1$ChangedPM,alternative="less",paired=FALSE) #CLIFF DELTA t1=as.matrix(rawData_2$ChangedPM) colnames(t1)<-c("t1") t2=as.matrix(rawData_1$ChangedPM) colnames(t2)<-c("t2") o<-orddom(t1,t2) cliffdelta<-o[13,1] cliffdelta #CHANGE-PRONENESS - MODIFIED METHODS SIGNATURES - APPS HAVING AVERAGE RATING > 4 vs APPS HAVING AVERAGE RATING <=4 AND > 3 #WILCOXON TEST wilcox.test(rawData_4$MwithSignatureModified, rawData_3$MwithSignatureModified,alternative="less",paired=FALSE) #CLIFF DELTA t1=as.matrix(rawData_4$MwithSignatureModified) colnames(t1)<-c("t1") t2=as.matrix(rawData_3$MwithSignatureModified) colnames(t2)<-c("t2") o<-orddom(t1,t2) cliffdelta<-o[13,1] cliffdelta #CHANGE-PRONENESS - MODIFIED METHODS SIGNATURES - APPS HAVING AVERAGE RATING > 4 vs APPS HAVING AVERAGE RATING <=3 AND > 2 #WILCOXON TEST wilcox.test(rawData_4$MwithSignatureModified, rawData_2$MwithSignatureModified,alternative="less",paired=FALSE) #CLIFF DELTA t1=as.matrix(rawData_4$MwithSignatureModified) colnames(t1)<-c("t1") t2=as.matrix(rawData_2$MwithSignatureModified) colnames(t2)<-c("t2") o<-orddom(t1,t2) cliffdelta<-o[13,1] cliffdelta #CHANGE-PRONENESS - MODIFIED METHODS SIGNATURES - APPS HAVING AVERAGE RATING > 4 vs APPS HAVING AVERAGE RATING <=2 #WILCOXON TEST wilcox.test(rawData_4$MwithSignatureModified, rawData_1$MwithSignatureModified,alternative="less",paired=FALSE) #CLIFF DELTA t1=as.matrix(rawData_4$MwithSignatureModified) colnames(t1)<-c("t1") t2=as.matrix(rawData_1$MwithSignatureModified) colnames(t2)<-c("t2") o<-orddom(t1,t2) cliffdelta<-o[13,1] cliffdelta #CHANGE-PRONENESS - MODIFIED METHODS SIGNATURES - APPS HAVING AVERAGE RATING > 3 AND <=4 vs APPS HAVING AVERAGE RATING <=3 AND > 2 #WILCOXON TEST wilcox.test(rawData_3$MwithSignatureModified, rawData_2$MwithSignatureModified,alternative="less",paired=FALSE) #CLIFF DELTA t1=as.matrix(rawData_3$MwithSignatureModified) colnames(t1)<-c("t1") t2=as.matrix(rawData_2$MwithSignatureModified) colnames(t2)<-c("t2") o<-orddom(t1,t2) cliffdelta<-o[13,1] cliffdelta #CHANGE-PRONENESS - MODIFIED METHODS SIGNATURES - APPS HAVING AVERAGE RATING > 3 AND <=4 vs APPS HAVING AVERAGE RATING <=2 #WILCOXON TEST wilcox.test(rawData_3$MwithSignatureModified, rawData_1$MwithSignatureModified,alternative="less",paired=FALSE) #CLIFF DELTA t1=as.matrix(rawData_3$MwithSignatureModified) colnames(t1)<-c("t1") t2=as.matrix(rawData_1$MwithSignatureModified) colnames(t2)<-c("t2") o<-orddom(t1,t2) cliffdelta<-o[13,1] cliffdelta #CHANGE-PRONENESS - MODIFIED METHODS SIGNATURES - APPS HAVING AVERAGE RATING > 2 AND <=3 vs APPS HAVING AVERAGE RATING <=2 #WILCOXON TEST wilcox.test(rawData_2$MwithSignatureModified, rawData_1$MwithSignatureModified,alternative="less",paired=FALSE) #CLIFF DELTA t1=as.matrix(rawData_2$MwithSignatureModified) colnames(t1)<-c("t1") t2=as.matrix(rawData_1$MwithSignatureModified) colnames(t2)<-c("t2") o<-orddom(t1,t2) cliffdelta<-o[13,1] cliffdelta #CHANGE-PRONENESS - MODIFIED PUBLIC METHODS SIGNATURES - APPS HAVING AVERAGE RATING > 4 vs APPS HAVING AVERAGE RATING <=4 AND > 3 #WILCOXON TEST wilcox.test(rawData_4$PMwithSignatureModified, rawData_3$PMwithSignatureModified,alternative="less",paired=FALSE) #CLIFF DELTA t1=as.matrix(rawData_4$PMwithSignatureModified) colnames(t1)<-c("t1") t2=as.matrix(rawData_3$PMwithSignatureModified) colnames(t2)<-c("t2") o<-orddom(t1,t2) cliffdelta<-o[13,1] cliffdelta #CHANGE-PRONENESS - MODIFIED PUBLIC METHODS SIGNATURES - APPS HAVING AVERAGE RATING > 4 vs APPS HAVING AVERAGE RATING <=3 AND > 2 #WILCOXON TEST wilcox.test(rawData_4$PMwithSignatureModified, rawData_2$PMwithSignatureModified,alternative="less",paired=FALSE) #CLIFF DELTA t1=as.matrix(rawData_4$PMwithSignatureModified) colnames(t1)<-c("t1") t2=as.matrix(rawData_2$PMwithSignatureModified) colnames(t2)<-c("t2") o<-orddom(t1,t2) cliffdelta<-o[13,1] cliffdelta #CHANGE-PRONENESS - MODIFIED PUBLIC METHODS SIGNATURES - APPS HAVING AVERAGE RATING > 4 vs APPS HAVING AVERAGE RATING <=2 #WILCOXON TEST wilcox.test(rawData_4$PMwithSignatureModified, rawData_1$PMwithSignatureModified,alternative="less",paired=FALSE) #CLIFF DELTA t1=as.matrix(rawData_4$PMwithSignatureModified) colnames(t1)<-c("t1") t2=as.matrix(rawData_1$PMwithSignatureModified) colnames(t2)<-c("t2") o<-orddom(t1,t2) cliffdelta<-o[13,1] cliffdelta #CHANGE-PRONENESS - MODIFIED PUBLIC METHODS SIGNATURES - APPS HAVING AVERAGE RATING > 3 AND <=4 vs APPS HAVING AVERAGE RATING <=3 AND > 2 #WILCOXON TEST wilcox.test(rawData_3$PMwithSignatureModified, rawData_2$PMwithSignatureModified,alternative="less",paired=FALSE) #CLIFF DELTA t1=as.matrix(rawData_3$PMwithSignatureModified) colnames(t1)<-c("t1") t2=as.matrix(rawData_2$PMwithSignatureModified) colnames(t2)<-c("t2") o<-orddom(t1,t2) cliffdelta<-o[13,1] cliffdelta #CHANGE-PRONENESS - MODIFIED PUBLIC METHODS SIGNATURES - APPS HAVING AVERAGE RATING > 3 AND <=4 vs APPS HAVING AVERAGE RATING <=2 #WILCOXON TEST wilcox.test(rawData_3$PMwithSignatureModified, rawData_1$PMwithSignatureModified,alternative="less",paired=FALSE) #CLIFF DELTA t1=as.matrix(rawData_3$PMwithSignatureModified) colnames(t1)<-c("t1") t2=as.matrix(rawData_1$PMwithSignatureModified) colnames(t2)<-c("t2") o<-orddom(t1,t2) cliffdelta<-o[13,1] cliffdelta #CHANGE-PRONENESS - MODIFIED PUBLIC METHODS SIGNATURES - APPS HAVING AVERAGE RATING > 2 AND <=3 vs APPS HAVING AVERAGE RATING <=2 #WILCOXON TEST wilcox.test(rawData_2$PMwithSignatureModified, rawData_1$PMwithSignatureModified,alternative="less",paired=FALSE) #CLIFF DELTA t1=as.matrix(rawData_2$PMwithSignatureModified) colnames(t1)<-c("t1") t2=as.matrix(rawData_1$PMwithSignatureModified) colnames(t2)<-c("t2") o<-orddom(t1,t2) cliffdelta<-o[13,1] cliffdelta