koef_asimetrije = function(x) {
  sqrt(length(x)) * sum((x - mean(x))^3) / (sum((x - mean(x))^2))^(3/2)
}

podaci = nerv$V1
n = length(podaci)

B = 1000
T_B = rep(0, B)
for (i in 1:B) {
  x_B = sample(podaci, n, replace = T)
  T_B[i] = koef_asimetrije(x_B)
}
(se_B = sqrt( (B - 1) / B * var(T_B) ))

alpha = 0.05
# normalni IP
z = qnorm(1 - alpha / 2)
hn = koef_asimetrije(podaci)
c(hn - z * se_B, hn + z * se_B)

# stozerni IP
h1_B = sort(T_B)[(1 - alpha / 2) * B]
h2_B = sort(T_B)[alpha / 2 * B]
c(2 * hn - h1_B, 2 * hn - h2_B)
  
# percentilni IP
c(h2_B, h1_B)

# studentizovani IP
# sprovodimo butstrep da dobijemo z*
z_B = rep(0, B)
for (i in 1:B) {
  x_B = sample(podaci, n, replace = T)
  T_B[i] = koef_asimetrije(x_B)
  
  T_BB = rep(0, B)
  for (j in 1:B) {
    x_BB = sample(x_B, n, replace = T)
    T_BB[j] = koef_asimetrije(x_BB)
  }
  se_BB = sqrt( (B - 1) / B * var(T_BB) )
  
  z_B[i] = (T_B[i] - hn) / se_BB
}

z1_B = sort(z_B)[(1 - alpha / 2) * B]
z2_B = sort(z_B)[alpha / 2 * B]
c(hn - z1_B * se_B, hn - z2_B * se_B)