1. zadatak

# GeneriĊĦemo uzorak i uniformne U[-5,0] raspodjele

n <- 1000
x <- runif(n, -5, 0)

# Ocjene parametra theta na osnovu uzorka x

theta1 <- (n + 1) / n * min(x)
theta2 <- 2 * mean(x)

# Hocemo da ocijenimo disperzije ovih ocjena

ocjene <- function(n) {
  x <- runif(n, -5, 0)
  theta1 <- (n + 1) / n * min(x)
  theta2 <- 2 * mean(x)
  
  return(c(theta1, theta2))
  
}

r <- replicate(1000, ocjene(100))
# Ocjene ocekivanje ocjena theta1 i theta2
rowMeans(r)
## [1] -4.996975 -5.003233
# Obje su blizu -5 sto je ocekivano jer su ocjene nepristrasne
# Ocjene disperzija

var(r[1, ])
## [1] 0.00280046
var(r[2, ])
## [1] 0.08559605
# Prva je mnogo manja, pa je prva ocjena bolja

# Poredimo sa teorijskim disperzijama

n <- 100
d1 <- 1 / (n * (n + 2)) * (-5) ^ 2
d2 <- 1 / (3 * n) * (-5) ^ 2


# Vektor r predstavlja uzorak ocjena. Ako hocemo da imamo neku sliku o raspodjelama
# tih ocjena mozemo da nacrtamo njihov histogram

theta1.uzorak <- r[1,]
theta2.uzorak <- r[2,]

library ( lattice )

hist (theta1.uzorak, prob =TRUE , xlab ="",ylab ="",col ='coral1',border ='bisque', main="")

hist (theta2.uzorak, prob =TRUE , xlab ="",ylab ="",col ='coral1',border ='bisque', main="")

2. zadatak

# Neka je obim uzorka 100
n <- 100
# a) N=10, p=1/2

x <- rbinom(n, 10, 0.5)
p.hat <- 1 / 10 * mean(x)
p.hat
## [1] 0.514
# b) theta je 1

x <- runif(n)
theta.hat <- 2 * mean(x)
theta.hat
## [1] 0.9728838
# c) Generisemo prvo ovu raspodjelu

x <- function(p) {
  u <- runif(1)
  if (u <= p / 2)
    return(-1)
  else if (u > p / 2 & u <= p)
    return(0)
  else
    return(1)
  
}
# p=1/2
uzorak <- replicate(n, x(0.5))
p.hat <- 2 / 3 * (1 - mean(uzorak))
p.hat
## [1] 0.5066667
# Ostale primjere uradite za domaci!

Metod maksimalne vjerodostojnosti

6. zadatak

# a)
# lambda=3
x <- rpois(n, lambda = 3)
lambda.hat <- mean(x)
lambda.hat
## [1] 3.24
# ocjenu MMV mozemo dobiti i pozivom funkcije fitdistr() iz paketa MASS

#install.packages("MASS")
library(MASS)
## Warning: package 'MASS' was built under R version 3.2.5
fitdistr(x, "Poisson")
##   lambda 
##   3.24   
##  (0.18)
# ista ocjena kao ona koju smo nasli sami

# c)

x <- rgeom(n, prob = 0.8)
p.hat <- 1 / mean(x + 1)
# korekcija zbog razlike u definiciji (1. semestar)
p.hat
## [1] 0.7936508
fitdistr(x, "geometric")
##       prob   
##   0.79365079 
##  (0.03605212)
# Ako ocjenu mmv ne mozemo dobiti u eksplicitnom obliku, vec trazeno numericka
# resenja, kao sto je to slucaj kod gama raspodjele, onda nam ova funkcija moze 
# biti korisna.

x <- rgamma(1000, shape = 2, rate = 0.5)
fitdistr(x, "gamma")
## Warning in densfun(x, parm[1], parm[2], ...): NaNs produced
## Warning in densfun(x, parm[1], parm[2], ...): NaNs produced

## Warning in densfun(x, parm[1], parm[2], ...): NaNs produced
##      shape         rate   
##   1.90911197   0.48289430 
##  (0.07905231) (0.02284656)

7. zadatak

x <- 0:5
ni <- c(6, 10, 14, 13, 6, 1)
n <- sum(ni)
p.hat <- sum(x*ni)/(5*n)

# ocjena za P(X>=3)=1-P(X<3)=1-P(X<=2)=1-F(2)

1 - pbinom( 2 , 5, p.hat)
## [1] 0.3596797