


#### Kodovi koji odgovaraju primjerima sa spiska zadataka ####




# 1. zadatak

# Generisemo 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)
# Obje su blizu -5 sto je ocekivano jer su ocjene nepristrasne
# Ocjene disperzija

var(r[1, ])
var(r[2, ])

# 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

# 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

# b) theta je 1

x <- runif(n)
theta.hat <- 2 * mean(x)
theta.hat

# 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

# Ostale primjere uradite za domaci!


### Metod maksimalne vjerodostojnosti ###

# 6. zadatak

# a)
# lambda=3
x <- rpois(n, lambda = 3)
lambda.hat <- mean(x)
lambda.hat
# ocjenu MMV mozemo dobiti i pozivom funkcije fitdistr() iz paketa MASS

install.packages("MASS")
library(MASS)
fitdistr(x, "Poisson")

# 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

fitdistr(x, "geometric")


# 7. zadatak

x<-0:5
ni<-c(6, 10, 14, 13, 6, 1)
n<-sum(ni)
p.hat<-t(x)%*%ni/(5*n)

# ocjena

1 - dbinom(2, 5, p.hat)

# 11.
# a)
# m=0, sigma^2=1
x <- rnorm(n)
m.hat <- mean(x)
m.hat
sd2.hat <- sum((x - mean(x)) ^ 2) / n
sd2.hat
sd.hat<-sqrt(sd2.hat)
sd.hat
# ili
(n - 1) / n * var(x)

fitdistr(x, "normal")



