diff options
| author | Loic Guegan <manzerbredes@mailbox.org> | 2022-12-09 13:27:27 +0100 |
|---|---|---|
| committer | Loic Guegan <manzerbredes@mailbox.org> | 2022-12-09 13:27:27 +0100 |
| commit | 9358e86f72db4acc4682cdfbed8f02d7cb073cde (patch) | |
| tree | e18d3e09b978afe3eab2eb53f324b9dd62d6664f /analysis | |
| parent | 3a4c5500f7c3e139fbb44b2c98343bd0091ae593 (diff) | |
Update
Diffstat (limited to 'analysis')
| -rw-r--r-- | analysis/analysis.R | 32 | ||||
| -rw-r--r-- | analysis/days.R | 47 | ||||
| -rw-r--r-- | analysis/figures/combined.pdf | bin | 1161922 -> 1123336 bytes | |||
| -rw-r--r-- | analysis/figures/dimension_energy-coverage-policy.pdf | bin | 139310 -> 139310 bytes | |||
| -rw-r--r-- | analysis/figures/dimension_energy-coverage-wakeupfor.pdf | bin | 137643 -> 137643 bytes | |||
| -rw-r--r-- | analysis/figures/dimension_energy-coverage.pdf | bin | 149152 -> 98704 bytes | |||
| -rw-r--r-- | analysis/figures/months_accuracy.pdf | bin | 0 -> 11833 bytes | |||
| -rw-r--r-- | analysis/figures/months_f1-score.pdf | bin | 0 -> 8120 bytes | |||
| -rw-r--r-- | analysis/kmeans.R | 51 | ||||
| -rw-r--r-- | analysis/renv.lock | 99 |
10 files changed, 204 insertions, 25 deletions
diff --git a/analysis/analysis.R b/analysis/analysis.R index 8a76849..bd27626 100644 --- a/analysis/analysis.R +++ b/analysis/analysis.R @@ -1,4 +1,5 @@ library("tidyverse") +library("viridis") ## Simulation Parameters: ## simkey {baseline,extended,hint,hintandextended} @@ -19,7 +20,7 @@ nwireless=2 nsimkey=4 nsimulations=nseed*nwakeupfor*nwireless*nsimkey # Must be 3200 -if(1==2){ +if(FALSE){ # Toggle ## Load data data=read_csv("../CCGRID2022.csv")%>%distinct() # Note that in the data experiment wireless=="lora",seed==1,wakeupfor==60,simkey=="baseline" is present 2 times in the CSV file tmp_data_coverage=data%>%group_by(simkey,wireless,wakeupfor,seed)%>%mutate(coverage=sum(nDataRcv))%>%ungroup()%>%filter(isSender==1)%>%select(simkey,wireless,wakeupfor,seed,coverage) @@ -42,24 +43,17 @@ sim=sim%>%mutate(id_rand=rand_id[id]) } ## Perform various plots to understand the data GG_VARIOUS=function(){ - ## Dimension Coverage - ggplot(data_seed%>%mutate(wakeupfor=as.character(wakeupfor)), - aes(simkey,coverage,color=wakeupfor))+geom_point()+facet_wrap(~wireless+wakeupfor)+ggtitle("Dimension Coverage") - ggsave("figures/dimension_coverage.pdf") - ## Dimension Energy - ggplot(data_seed%>%mutate(wakeupfor=as.character(wakeupfor)), - aes(simkey,energy,color=wakeupfor))+geom_point()+facet_wrap(~wireless+wakeupfor)+ggtitle("Dimension Energy")+ylab("Energy Consumption (J)") - ggsave("figures/dimension_energy.pdf") - ## Dimension Efficiency - ggplot(data_seed%>%mutate(wakeupfor=as.character(wakeupfor)), - aes(simkey,efficiency,color=wakeupfor))+ - geom_point()+facet_wrap(~wireless+wakeupfor)+ggtitle("Dimension Efficiency")+ylab("Efficiency (J/Succ)") - ggsave("figures/dimension_efficiency.pdf") ## Dimension Energy/Coverage ggplot(data_seed%>%mutate(wakeupfor=as.character(wakeupfor)), - aes(coverage,energy,color=simkey))+geom_point(alpha=0.5)+labs(color="Policy")+theme(legend.position="top")+ - ggtitle("Dimension Energy/Coverage")+xlab("Coverage")+ylab("Nodes energy consumption (J)")+ - facet_wrap(~wakeupfor+wireless,scale="free") + aes(coverage,energy,color=simkey))+geom_point(aes(shape=simkey),alpha=0.5)+labs(color="Policy")+ + xlab("Network coverage")+ylab("Nodes energy consumption (J)")+ + scale_shape_manual(values=c(22, 15, 16,1))+labs(shape="Policy",color="Policy")+ + theme_bw()+ + guides(colour = guide_legend(override.aes = list(alpha = 1)))+ + facet_wrap(~wakeupfor+wireless,scale="free")+scale_color_viridis(discrete=TRUE)+ + theme(legend.position = c(0.15,0.87), + legend.background = element_rect(fill = "white", color = "black",size=0.8))+ + scale_x_continuous(breaks=seq(0,12)) ggsave("figures/dimension_energy-coverage.pdf") ## Dimension Energy/Coverage Wakeupfor ggplot(data_seed%>%mutate(wakeupfor=as.character(wakeupfor)), @@ -114,8 +108,8 @@ GG_SIMULATIONS = function(file,key="NOKEY") { } -GG_SIMULATIONS("../simulations/results/results_NoHintIsFALSE.csv",key="WITH_HINT") -GG_SIMULATIONS("../simulations/results/results_NoHintIsTRUE.csv",key="NO_HINT") +#GG_SIMULATIONS("../simulations/results/results_NoHintIsFALSE.csv",key="WITH_HINT") +#GG_SIMULATIONS("../simulations/results/results_NoHintIsTRUE.csv",key="NO_HINT") system("rm -f figures/combined.pdf") system("pdfunite figures/*.pdf figures/combined.pdf") diff --git a/analysis/days.R b/analysis/days.R index ce12930..2b671d1 100644 --- a/analysis/days.R +++ b/analysis/days.R @@ -107,11 +107,12 @@ generate_accuracy = function(wireless,wakeupfor,steps=10, accuracy=10,ignore_hin } # Generate accuracy for each wireless and uptime -#accuracy=rbind(generate_accuracy("lora",60), -# generate_accuracy("lora",180), -# generate_accuracy("nbiot",60), -# generate_accuracy("nbiot",180)) - +if(F){ # Toggle to train +accuracy=rbind(generate_accuracy("lora",60), + generate_accuracy("lora",180), + generate_accuracy("nbiot",60), + generate_accuracy("nbiot",180)) +} ## Summarize result_summary=accuracy%>%group_by(wireless,wakeupfor,months,model)%>% summarize( @@ -125,7 +126,41 @@ result_summary=accuracy%>%group_by(wireless,wakeupfor,months,model)%>% metrics_peak=result_summary%>%group_by(wireless,wakeupfor,model)%>% summarize(max_accuracy=max(mean_accuracy)) -## Plot + +ggplot(data=result_summary%>%mutate(model=ifelse(model=="knn","KNN","DT")),aes(linetype=model))+ + geom_line(aes(months,mean_f1_baseline,color="Baseline"),size=1.2)+ + geom_line(aes(months,mean_f1_extended,color="Extended"),size=1.2)+ + geom_line(aes(months,mean_f1_hintandextended,color="Hintandextended"),size=1.2)+labs(color="Classes",linetype="Model")+ + facet_wrap(~wireless+wakeupfor)+ + scale_x_continuous(breaks = seq(0, 15, by = 1))+ + scale_y_continuous(breaks = seq(0, 1, by = 0.1))+ + theme_bw()+ + theme(panel.grid.minor = element_blank(), + legend.position = c(0.9,0.74), + legend.margin = margin(2,4,2,4), + legend.spacing=unit(-0.2,"cm"), + legend.box.margin=margin(1,1,1,1), + legend.box.background = element_rect(fill = "white", color = "black",size=0.8))+ + xlab("Training months")+ylab("Classes F1-Score")+ + scale_color_viridis(discrete=TRUE,end=0.7) +ggsave("figures/months_f1-score.pdf",width=8.5,height=6) +stopifnot(1) + +## Plot Merge Accuracy +ggplot(data=result_summary%>%mutate(model=ifelse(model=="knn","KNN","DT")),aes(months,mean_accuracy,color=model,shape=model))+ + geom_point(size=3)+geom_line(size=1.2)+xlab("Training months")+ylab("Model accuracy")+labs(color="Models",shape="Models")+ + scale_x_continuous(breaks = seq(0, 15, by = 1))+ + scale_y_continuous(breaks = seq(0, 1, by = 0.1))+ + facet_wrap(~wireless+wakeupfor)+ + theme_bw()+ + theme(panel.grid.minor = element_blank(), + legend.position = c(0.38,0.68), + legend.background = element_rect(fill = "white", color = "black",size=0.8))+ + scale_color_viridis(discrete=TRUE,end=0.7) +ggsave("figures/months_accuracy.pdf",width=8.5,height=6) + + +## Plot accuracy + F1-Score sapply(c("knn","tree"),function(grp){ data=result_summary%>%filter(model==grp) plot=ggplot(data,aes(months,mean_accuracy))+ diff --git a/analysis/figures/combined.pdf b/analysis/figures/combined.pdf Binary files differindex 9a4ed4b..4d4b866 100644 --- a/analysis/figures/combined.pdf +++ b/analysis/figures/combined.pdf diff --git a/analysis/figures/dimension_energy-coverage-policy.pdf b/analysis/figures/dimension_energy-coverage-policy.pdf Binary files differindex c0440c7..8798a50 100644 --- a/analysis/figures/dimension_energy-coverage-policy.pdf +++ b/analysis/figures/dimension_energy-coverage-policy.pdf diff --git a/analysis/figures/dimension_energy-coverage-wakeupfor.pdf b/analysis/figures/dimension_energy-coverage-wakeupfor.pdf Binary files differindex 42869c6..77c2b09 100644 --- a/analysis/figures/dimension_energy-coverage-wakeupfor.pdf +++ b/analysis/figures/dimension_energy-coverage-wakeupfor.pdf diff --git a/analysis/figures/dimension_energy-coverage.pdf b/analysis/figures/dimension_energy-coverage.pdf Binary files differindex 6d7cf5c..91c195f 100644 --- a/analysis/figures/dimension_energy-coverage.pdf +++ b/analysis/figures/dimension_energy-coverage.pdf diff --git a/analysis/figures/months_accuracy.pdf b/analysis/figures/months_accuracy.pdf Binary files differnew file mode 100644 index 0000000..51c8440 --- /dev/null +++ b/analysis/figures/months_accuracy.pdf diff --git a/analysis/figures/months_f1-score.pdf b/analysis/figures/months_f1-score.pdf Binary files differnew file mode 100644 index 0000000..42557a8 --- /dev/null +++ b/analysis/figures/months_f1-score.pdf diff --git a/analysis/kmeans.R b/analysis/kmeans.R new file mode 100644 index 0000000..320ba8d --- /dev/null +++ b/analysis/kmeans.R @@ -0,0 +1,51 @@ +########## INFORMATIONS ########## +# This file is made to study online classification +# So, each pair (wireless,wakeupfor) has its classification models (knn and decision tree) +################################## + +library("tidyverse") +options(dplyr.summarise.inform = FALSE) +library("class") +library("rpart") +library("rpart.plot") +library("viridis") +library("MLmetrics") + +## Simulation Parameters: +## simkey {baseline,extended,hint,hintandextended} +## wireless {lora,nbiot} +## wakeupfor {60s,180s} +## seed [1,200] +## node on[0,12] +## isSender {0,1} +## dataSize {1MB} + +## Metrics: +## energy [0,+inf) +## nDataRcv [0,+inf) + +nseed=200 +nwakeupfor=2 +nwireless=2 +nsimkey=4 +nsimulations=nseed*nwakeupfor*nwireless*nsimkey # Must be 3200 + +## Load data +data=suppressMessages(read_csv("../CCGRID2022.csv"))%>%distinct() # Note that in the data experiment wireless=="lora",seed==1,wakeupfor==60,simkey=="baseline" is present 2 times in the CSV file +data_seed=data%>%group_by(simkey,wireless,wakeupfor,seed)%>%summarize(energy=sum(energy),coverage=sum(nDataRcv))%>% ungroup() + +## Format data +data_seed=data_seed%>%filter(simkey!="hint") +wireless_map=c("lora"=1,"nbiot"=2) +simkey_map=c("baseline"=1,"hint"=2,"extended"=3,"hintandextended"=4) +data_seed$wireless=wireless_map[data_seed$wireless] +data_seed$simkey=simkey_map[data_seed$simkey] + + +## Lora 180s +data_kmean=data_seed%>%filter(wireless==1,wakeupfor==180)%>%select(-wireless,-wakeupfor,-seed)%>%relocate(simkey) +m=kmeans(data_kmean,3,nstart=50,iter.max=80) +data_kmean=data_kmean%>%mutate(cluster=as.factor(m$cluster)) + +## plots +ggplot(data=data_kmean,aes(coverage,energy,color=as.factor(cluster)))+geom_point() diff --git a/analysis/renv.lock b/analysis/renv.lock index c51eb94..e597486 100644 --- a/analysis/renv.lock +++ b/analysis/renv.lock @@ -17,6 +17,14 @@ "Hash": "b2866e62bab9378c3cc9476a1954226b", "Requirements": [] }, + "KernSmooth": { + "Package": "KernSmooth", + "Version": "2.23-20", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8dcfa99b14c296bc9f1fd64d52fd3ce7", + "Requirements": [] + }, "MASS": { "Package": "MASS", "Version": "7.3-57", @@ -25,6 +33,16 @@ "Hash": "71476c1d88d1ebdf31580e5a257d5d31", "Requirements": [] }, + "MLmetrics": { + "Package": "MLmetrics", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c8c93b7ca030b43af9e0394700be4c7e", + "Requirements": [ + "ROCR" + ] + }, "Matrix": { "Package": "Matrix", "Version": "1.4-1", @@ -51,6 +69,16 @@ "Hash": "45f0398006e83a5b10b72a90663d8d8c", "Requirements": [] }, + "ROCR": { + "Package": "ROCR", + "Version": "1.0-11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "cc151930e20e16427bc3d0daec62b4a9", + "Requirements": [ + "gplots" + ] + }, "askpass": { "Package": "askpass", "Version": "1.1", @@ -103,6 +131,14 @@ "bit" ] }, + "bitops": { + "Package": "bitops", + "Version": "1.0-7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b7d8d8ee39869c18d8846a184dd8a1af", + "Requirements": [] + }, "blob": { "Package": "blob", "Version": "1.2.3", @@ -150,6 +186,16 @@ "sass" ] }, + "caTools": { + "Package": "caTools", + "Version": "1.18.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "34d90fa5845004236b9eacafc51d07b2", + "Requirements": [ + "bitops" + ] + }, "cachem": { "Package": "cachem", "Version": "1.0.6", @@ -486,6 +532,28 @@ "vctrs" ] }, + "gplots": { + "Package": "gplots", + "Version": "3.1.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "75437dd4c43599f6e9418ea249495fda", + "Requirements": [ + "KernSmooth", + "caTools", + "gtools" + ] + }, + "gridExtra": { + "Package": "gridExtra", + "Version": "2.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7d7f283939f563670a697165b2cf5560", + "Requirements": [ + "gtable" + ] + }, "gtable": { "Package": "gtable", "Version": "0.3.1", @@ -494,6 +562,14 @@ "Hash": "36b4265fb818f6a342bed217549cd896", "Requirements": [] }, + "gtools": { + "Package": "gtools", + "Version": "3.9.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "32600a0bea839c4d0ac998d7c547ecf7", + "Requirements": [] + }, "haven": { "Package": "haven", "Version": "2.5.1", @@ -739,6 +815,17 @@ "askpass" ] }, + "patchwork": { + "Package": "patchwork", + "Version": "1.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "63b611e9d909a9ed057639d9c3b77152", + "Requirements": [ + "ggplot2", + "gtable" + ] + }, "pillar": { "Package": "pillar", "Version": "1.8.1", @@ -1181,6 +1268,18 @@ "rlang" ] }, + "viridis": { + "Package": "viridis", + "Version": "0.6.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ee96aee95a7a563e5496f8991e9fde4b", + "Requirements": [ + "ggplot2", + "gridExtra", + "viridisLite" + ] + }, "viridisLite": { "Package": "viridisLite", "Version": "0.4.1", |
