lower <- numeric(10000) # Ustvarimo vektor, v katerega bomo shranili meje intervalnih ocen.
upper <- numeric(10000) # Ustvarimo vektor, v katerega bomo shranili meje intervalnih ocen.
n=100 # Določimo velikost vzorca
# Ponavljamo vzorčenje 100 enot 10 000 krat; za vsak vzorec ocenimo povprečje in intervalno oceno (alfa=0,05). Pri izračunu uporabimo oceno povprečja in oceno standardnega odklona, ki ga opazimo na vzorcu.
for(i in 1:10000) {
Y <- runif(n, min = 0, max = 10)
lower[i] <- mean(Y) + qnorm(0.025) * sd(Y)/sqrt(n)
upper[i] <- mean(Y) + qnorm(0.975) * sd(Y)/sqrt(n)
}
# Združimo spodnjo in zgornjo mejo intervala v matriko
CIs <- cbind(lower, upper)
head(CIs)
## lower upper
## [1,] 4.696008 5.861166
## [2,] 4.577254 5.607395
## [3,] 3.825257 4.794953
## [4,] 4.938579 5.960727
## [5,] 4.199360 5.366361
## [6,] 4.376818 5.540365
# Izmed 10 000 vzorcev preverimo delež vzorcev, ki vsebuje pravo vrednost povprečja (Mu=5).
mean(CIs[, 1] <= 5 & 5 <= CIs[, 2])
## [1] 0.9463
# Poiščemo vzorce, ki med prvimi stotimi vzorci ne vsebujejo prave vrednosti povprečja
ID <- which(!(CIs[1:100, 1] <= 5 & 5 <= CIs[1:100, 2]))
ID
## [1] 3 9 59 60 85 90
# Določimo obliko grafa
plot(0,
xlim = c(0, 10),
ylim = c(1, 100),
ylab = "Vzorec",
xlab = expression(mu),
main = "Intervalne ocene za aritmetično sredino")
# S sivo označimo dobre intervalne ocene; tiste, ki zgrešijo, označimo z rdečo barvo
colors <- rep(gray(0.7), 100)
colors[ID] <- "red"
# Narišemo navpično črto pri pravi vrednosti parametra (Mu=5)
abline(v = 5, lty = 2)
# V graf vrišemo prvih 100 intervalnih ocen.
for(j in 1:100) {
lines(c(CIs[j, 1], CIs[j, 2]),
c(j, j),
col = colors[j],
lwd = 2)
}
