# ===== NO 4a : diketahui
alfa = 0.1 
ragam = 0.5
marginoferror = 0.05
sigma = sqrt(ragam)
# mencari jumlah sampel (rata-rata)
# formula : n = ((sigma*z)/m)^2



jumlah_sampel = function(alfa,sigma,m){
  z = qnorm(p = (1-(alfa/2)), lower.tail = TRUE)
  n = ceiling(((sigma*z)/m)^2)
  n
}
jumlah_sampel(0.1,sqrt(0.5),0.05)
## [1] 542
# ===== NO 4b : n turun maka taraf signifikan diturunkan tapi margin of error (kesalahan percontohan) naik

# ===== NO 4c : 
# selang kepercayaan rata-rata satu populasi diketahui xbar

ci_rata_xbar = function(xbar,alfa,sigma,n){
  z      = qnorm(p = (1-(alfa/2)), lower.tail = TRUE)
  t      = qt(p = alfa/2, df = n-1, lower.tail = FALSE)
  
  if (sigma == 0 ) #ragam populasi tidak diketahui
  {
    s = sd(data)
    if (n >= 30) {
      m = z*s/sqrt(n)
    }
    else {
      m = t*s/sqrt(n)
    }
  }
  else            #ragam populasi diketahui
  {
    m = z*sigma/sqrt(n)
  }
  ci_lower = xbar - m
  ci_upper = xbar + m
  con_interval = cbind (ci_lower, ci_upper)
  con_interval
}

ci_rata_xbar(5,0.04,sqrt(0.5),25)
##      ci_lower ci_upper
## [1,] 4.709556 5.290444
# ===== NO 5 :
set.seed(12029)
data1 = sample(5:10, 10, replace = T)
data2 = rnorm(10,3,2*029)

# ===== NO 5a :
# selang kepercayaan ragam satu populasi

ci_ragam = function (data,alfa,sigma,n){
  chisquare_1 = qchisq(p = alfa/2, df = n-1, lower.tail=FALSE)
  chisquare_2 = qchisq(p = 1-(alfa/2), df = n-1, lower.tail=FALSE)
  
  if (sigma == 0) #ragam populasi tidak diketahui
  {
    s     = sd(data) 
    lower = ((n-1)*s^2)/chisquare_1
    upper = ((n-1)*s^2)/chisquare_2
  }
  else            #ragam populasi diketahui
  {
    lower = ((n-1)*sigma^2)/chisquare_1
    upper = ((n-1)*sigma^2)/chisquare_2
  }
  con_interval = cbind(lower,upper)
  con_interval
}

ci_ragam(data1,0.05,0,10)
##         lower    upper
## [1,] 1.072399 7.554466
# ===== NO 5b :
# selang kepercayaan rata-rata satu populasi diketahui kumpulan data

ci_rata  = function(data,alfa,sigma,n){
  xbar   = mean(data)
  z      = qnorm(p = (1-(alfa/2)), lower.tail = TRUE)
  t      = qt(p = alfa/2, df = n-1, lower.tail = FALSE)
  
  if (sigma == 0 ) #ragam populasi tidak diketahui
  {
    s = sd(data)
    if (n >= 30) {
      m = z*s/sqrt(n)
    }
    else {
      m = t*s/sqrt(n)
    }
  }
  else             #ragam populasi diketahui
  {
    m = z*sigma/sqrt(n)
  }
  ci_lower = xbar - m
  ci_upper = xbar + m
  con_interval = cbind (ci_lower, ci_upper)
  con_interval
}

ci_rata(data2,0.05,0,10)
##       ci_lower ci_upper
## [1,] -40.27998 57.64338