# This is semi-generic code for doing a power analysis of a logistic regression with 4
# levels in a factor
# when there's some pilot values already available and defined
#modelled heavily the simulation example explained in:
#http://meeting.spsp.org/2016/sites/default/files/Lane%2C%20Hennes%2C%20West%20SPSP%20Power%20Workshop%202016.pdf

library('batman')
library('reshape')

l2p <- function(b) {
 odds <- exp(b) 
 prob <- odds/(1+odds)
 return(prob)
}


#Matt: 
makeDataNew <- function(n) {
  sDF <- data.frame(
  )
  colnames(sDF) <- c('formality', 'age', 'contributors', 'collaborators', 'milestones', 'mmt', 'up.fac.mean')
  return(sDF)
}

powerCheck <- function(n, nSims) { #run a power calculation on the dataset given
  #set up some empty arrays b/c R
  signif0 <- rep(NA, nSims)
  signif1 <- rep(NA, nSims)
  signif2 <- rep(NA, nSims)
  signif3 <- rep(NA, nSims)
  signifM <- rep(NA, nSims)
  for (s in 1:nSims) {           # repeatedly we will....
    simData <- makeDataNew(n)       # make some data
    #have updated for kkex through here, now need to look at the underproduction work
    m1.sim <- lm(up.fac.mean ~ ((mmt)/ (milestones/age)), data=simData)
    p0 <- coef(summary(m1.sim))[1,4]
    p1 <- coef(summary(m1.sim))[1,4]
    p2 <- coef(summary(m1.sim))[1,4]
    p3 <- coef(summary(m1.sim))[1,4]
    signif0[s] <- p0 <=.05
    signif1[s] <- p1 <=.05
    signif2[s] <- p2 <=.05
    signif3[s] <- p3 <=.05
    signifM[s] <- p0 <=.05 & p1 <=.05 & p2 <=.05 & p3 <=.05
  }  
  power <- c(mean(signif0), mean(signif1), mean(signif2), mean(signif3), mean(signifM))
  return(power)
}

