# General estimating equations for analysis of acoustic and social paramters
library(geepack)
source("selectGEE.R")

###### PREPARE DATA
dataMovRS<- read.csv("data_gee1.csv") # Load horizontal movement reaction score data
dataAcouSoc<- read.csv("data_gee2.csv") # Load acoustic and social parameter data

# Set variables to factors
dataMovRS[c("ID", "Stimuli", "Order", "Version")] <- lapply(dataMovRS[c("ID", "Stimuli", "Order", "Version")], as.factor)
dataAcouSoc[c("ID", "Stimuli", "Order", "Version", "Phase")] <- lapply(dataAcouSoc[c("ID", "Stimuli", "Order", "Version", "Phase")], as.factor)

# remove upsweep
dataMovRS <- droplevels(subset(dataMovRS, Stimuli != "Upsweep"))
dataAcouSoc <- droplevels(subset(dataAcouSoc, Stimuli != "Upsweep"))

###### MODEL 1 HORIZONTAL MOVEMENT REACTION SCORE
m1<-geeglm(MovRS~Stimuli+Order+Stimuli:Order, id=ID, data=dataMovRS, 
           family=gaussian, corstr = "independence", std.err="san.se")

m1.selection.results <- selectGEE(m1)
m1.selection.results
best.m1<-m1.selection.results$best.model
best.m1
summary(best.m1)

###### MODEL 2 N CALLS
m2<-geeglm(ncalls~Stimuli+Phase+Order+Stimuli:Phase, id=ID, data=dataAcouSoc, 
                 family=gaussian, corstr = "independence", std.err="san.se")

m2.selection.results <- selectGEE(m2)
m2.selection.results
best.m2<-m2.selection.results$best.model
best.m2
summary(best.m2)

###### MODEL 3 FOCAL GROUP SIZE
m3<-geeglm(GrpSize~Stimuli+Phase+Order+Stimuli:Phase, id=ID, data=dataAcouSoc, 
           family=gaussian, corstr = "independence", std.err="san.se")

m3.selection.results <- selectGEE(m3)
m3.selection.results
best.m3<-m3.selection.results$best.model
best.m3
summary(best.m3)

###### MODEL 4 INDIVIDUALS IN FOCAL AREA
m4<-geeglm(Ind_focalArea~Stimuli+Phase+Order+Stimuli:Phase, id=ID, data=dataAcouSoc, 
           family=gaussian, corstr = "independence", std.err="san.se")

m4.selection.results <- selectGEE(m4)
m4.selection.results
best.m4<-m4.selection.results$best.model
best.m4
summary(best.m4)

###### MODEL 5 INDIVIDUAL SPACING
m5<-geeglm(IndSpacing~Stimuli+Phase+Order+Stimuli:Phase, id=ID, data=dataAcouSoc, 
           family=gaussian, corstr = "independence", std.err="san.se")

m5.selection.results <- selectGEE(m5)
m5.selection.results
best.m5<-m5.selection.results$best.model
best.m5
summary(best.m5)

###### MODEL 6 LINE SWIMMING
m6<-geeglm(Line~Stimuli+Phase+Order+Stimuli:Phase, id=ID, data=dataAcouSoc, 
           family=gaussian, corstr = "independence", std.err="san.se")

m6.selection.results <- selectGEE(m6)
m6.selection.results
best.m6<-m6.selection.results$best.model
best.m6
summary(best.m6)

###### MODEL 7 MILLING
m7<-geeglm(Milling~Stimuli+Phase+Order+Stimuli:Phase, id=ID, data=dataAcouSoc, 
           family=gaussian, corstr = "independence", std.err="san.se")

m7.selection.results <- selectGEE(m7)
m7.selection.results
best.m7<-m7.selection.results$best.model
best.m7
summary(best.m7)

###### OBTAIN P-VALUES FOR MODEL SELECTION
# repeat for each model and with each variable in last place
m1.2<-geeglm(ncalls ~ Stimuli + Phase + Stimuli:Phase, id=ID, data=dataAcouSoc, family=gaussian, corstr = "independence", std.err="san.se")
anova(m1.2)

