There are 32 births overall; 5 in 2013, 15 in 2014, 12 in 2015. First birth in July 2013; last in April 2015 Observations started July 2013 (t=0.54), ended June 2015 (t=2.46). Set t0= 1 Jan 2013; birth times approximated as midway through the month.
dark line: cv = 1; light gray lines: cv = 1.1-1.5 (dashed) or 0.6-0.8 (dotted) Birth pulse narrows as the cv becomes larger
#hazard function
get_hazard_birth
## function (cv, time)
## {
## tfrac <- time%%1
## mu <- 0.443
## if (cv < 1/sqrt(3)) {
## alpha <- 1 + cv * sqrt(3)
## beta <- (2 * cv * sqrt(3))/(1 + cv * sqrt(3))
## }
## if (cv >= 1/sqrt(3)) {
## alpha <- 1.5 * (1 + (cv^2))
## beta <- 0.75 * (1 + (cv^2))
## }
## if (tfrac < 0.5 & tfrac >= 0) {
## val <- mu * alpha * max((1 - 2 * beta * tfrac), 0)
## }
## else if (tfrac >= 0.5 & tfrac <= 1) {
## val <- mu * alpha * max((1 - 2 * beta * (1 - tfrac)),
## 0)
## }
## else {
## val <- "error in evaluating maximum, time value is wierd"
## }
## return(val)
## }
dark lines represent cv=1; Calculated as exp(get_log_birth_like(time, t0 = 0, sigma=1))
# calculate log likelihood, set initial time = August 2014 (t=1.5)
get_log_birth_like
## function (t, t0, cv)
## {
## mu <- 0.443
## if (cv < 1/sqrt(3)) {
## talpha <- 1 + cv * sqrt(3)
## tbeta <- (2 * cv * sqrt(3))/(1 + cv * sqrt(3))
## }
## if (cv >= 1/sqrt(3)) {
## talpha <- 1.5 * (1 + (cv^2))
## tbeta <- 0.75 * (1 + (cv^2))
## }
## tfrac <- t%%1
## d <- t0 + t
## df <- d%%1
## c <- t0
## cf <- c%%1
## if (tfrac < 0.5 & tfrac >= 0) {
## hazard <- mu * talpha * max((1 - 2 * tbeta * tfrac),
## 0)
## }
## else if (tfrac >= 0.5 & tfrac <= 1) {
## hazard <- mu * talpha * max((1 - 2 * tbeta * (1 - tfrac)),
## 0)
## }
## H1 <- (1 - (tbeta/2)) * (floor(d) - floor(c) - 1)
## ifelse(cf < 0.5, H2 <- 0.5 * (1 - (tbeta/2)) + (0.5 - cf) *
## (1 - tbeta + (tbeta * (0.5 - cf))), H2 <- (1 - cf) *
## (1 - tbeta + (tbeta * (1 - cf))))
## ifelse(df < 0.5, H3 <- df * (1 - (tbeta * df)), H3 <- 0.5 *
## (1 - tbeta/2) + (df - 0.5) * (1 - tbeta + tbeta * (df -
## 0.5)))
## H4 <- (1/(2 * tbeta)) * (floor(d) - floor(c) - 1)
## if (cf < (1/(2 * tbeta))) {
## H5 <- (1/(4 * tbeta)) + tbeta * (((1/(2 * tbeta)) - cf)^2)
## }
## else if (cf >= (1/(2 * tbeta)) & cf < 1 - (1/(2 * tbeta))) {
## H5 <- 1/(4 * tbeta)
## }
## else {
## H5 <- (1 - cf) * (1 - (tbeta * (1 - cf)))
## }
## if (df < (1/(2 * tbeta))) {
## H6 <- df * (1 - tbeta * df)
## }
## else if (df >= (1/(2 * tbeta)) & df < 1 - (1/(2 * tbeta))) {
## H6 <- 1/(4 * tbeta)
## }
## else {
## H6 <- (1/(4 * tbeta)) + tbeta * (df - (1 - (1/(2 * tbeta))))^2
## }
## ifelse(cv < 1/sqrt(3), H <- mu * talpha * (H1 + H2 + H3),
## H <- mu * talpha * (H4 + H5 + H6))
## Surv <- exp(-H)
## val <- hazard * Surv
## LL <- log(val)
## return(LL)
## }
# minimize -loglikelihood; parameters cv
birthNLL = function(x, cv){
val <- 0
for (i in 1:length(x)){
temp <- get_log_birth_like(t = x[i], t0 = 0.04166, cv = cv)
val <- temp + val
}
return (-val)
}
# minimize -loglikelihood; parameteres cv and t0
birthNLL_t0cv = function(x, params){
# params[1]= t0
# params[2]= cv
val <- 0
for (i in 1:length(x)){
temp <- get_log_birth_like(t = x[i], t0 = params[1], cv = params[2])
val <- temp + val
}
return (-val)
}
Set t0 = 0.0417 = mid-January previous year