# Plot binomisk likelihood
p=seq(0.5,0.98,0.01)
loglik=log(dbinom(19,25,p))
plot(p,loglik,type="l",xlab="p",ylab="loglik",ylim=c(-10,-1.5))
loglik=log(dbinom(76,100,p))
lines(p,loglik,col=2)

# Eksponensialfordelte data
# Simulerer n=100 eksponensialfordelte data med rate (lambda) = 2
n=100
x=rexp(n,rate=2)
# Beregner og plotter log-likelihood for kandidatverdier av lambda
lambda=seq(1,3,0.001)
loglik= n*log(lambda) -lambda*sum(x)
plot(lambda,loglik,type="l")

# Beregner MLE og sjekker at den maksimerer log-likelihood
hatlambda=1/mean(x);hatlambda
abline(v=hatlambda,lty=2)

#Beregner standardfeil MLE
seMLE = hatlambda/sqrt(n)
seMLE

# Vil sjekke om dette MLE er tilnærmet normalfordelt med forventning lambda 
# og om standardfeilen er rimelig for denne fordeling ved SIMULERING

simres=numeric(0)
for (sim in 1:1000){
  xny=rexp(n,rate=2)
  nyMLE=1/mean(xny)
  nyse=nyMLE/sqrt(n)
  simres=rbind(simres,c(nyMLE,nyse))
}
# Beregner gjennomsnitt av simulerte MLE og standardfeil samt standardavvik til simulerte MLE
apply(simres,2,mean)
sd(simres[,1])
# Plotter histogram av simulerte MLE
hist(simres[,1])


# Parametrisk bootstrap for eksponensialfordeling
parbootMLE=numeric(0)
B=1000
for (b in 1:B) parbootMLE[b]=1/mean(rexp(n,rate=hatlambda))
mean(parbootMLE);sd(parbootMLE);hist(parbootMLE)

# Ikkeparametrisk bootstrap
nonparbootMLE=numeric(0)
for (b in 1:B) nonparbootMLE[b]=1/mean(sample(x,n,replace=T))
mean(nonparbootMLE);sd(nonparbootMLE);hist(nonparbootMLE)


