library(ggplot2)
library(lattice)
library(gridExtra)
#caricare dataset dati (pilprocapite mondo)
N=142
n=20
y=dati
mu=with(y,mean(gdpPercap))
mu
## [1] 11680.07
sigma=with(y,sd(gdpPercap))
sigma
## [1] 12859.94
# si crea la lista di campionamento
lista=c(1:N)
lista
## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
## [18] 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
## [35] 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
## [52] 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
## [69] 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
## [86] 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
## [103] 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
## [120] 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
## [137] 137 138 139 140 141 142
set.seed(1)
s=sample(lista,n)
# indichiamo il campione estratto con s
s
## [1] 68 129 43 14 51 85 21 106 74 7 73 79 37 105 89 110 101
## [18] 130 34 135
# indichiamo la stima ottenuta sul campione con mc
mc=mean(y$gdpPercap[s]);mc=round(mc,digits=2)
mc
## [1] 14036.16
# indichiamo l'errore di stima con ec
ec=mc-mu
round(ec,digits=2)
## [1] 2356.09
Ripetiamo il processo di estrazione del campione e il relativo processo di stima per 500 volte
M=500
res=rep(0,M)
set.seed(10)
for(i in 1:M){
s=sample(lista,n)
res[i]=mean(y$gdpPercap[s])
}
Alcune stime sono vicine a mu, altre sono lontane. Si nota come le stime oscillano casualmente attorno alla media della popolazione, ovvero l’errore di stima in media vale zero: stimatore corretto
Segue il calcolo dell’errore standard dello stimatore media campionaria
f=n/N
ES_ccs=sqrt( (1-f)*sigma^2/n )
ES_ccs
## [1] 2665.383
Possiamo verificare le caratteristiche di cui sopra sulle 500 stime ottenute
# in media le stime forniscono un valore molto vicino al parametro mu
mean(res)
## [1] 11632.42
mean(res)-mu
## [1] -47.65132
#la differenza tra la media delle stime e il parametro mu: -47.65132
(47.65132/11680.07)*100
## [1] 0.4079712
# che corrisponde ad un errore pari allo 0.40% di mu
Quanto sono variabili le 500 stime precedentemente ottenute?
# si nota come il valore sia vicino a quello fornito dalla teoria (ES_ccs)
sd(res)
## [1] 2551.681
set.seed(5)
n=5
s=sample(lista,n)
# indichiamo il campione estratto con s
s
## [1] 66 107 121 41 71
# indichiamo la stima ottenuta sul campione con mc
mc=mean(y$gdpPercap[s]);mc=round(mc,digits=2)
mc
## [1] 11246.8
# indichiamo l'errore di stima con ec
ec=mc-mu
round(ec,digits=2)
## [1] -433.27
Ripetiamo il processo di estrazione del campione e il relativo processo di stima per 500 volte
M=500
res_n5=rep(0,M)
set.seed(5)
for(i in 1:M){
s=sample(lista,n)
res_n5[i]=mean(y$gdpPercap[s])
}
Si nota come le stime oscillano casualmente attorno alla media della popolazione, ovvero l’errore di stima in media vale zero: stimatore corretto per qualsiasi dimensione campionaria
Segue il calcolo dell’errore standard dello stimatore media campionaria per n=5
f=n/N
ES_ccs_n5=sqrt( (1-f)*sigma^2/n )
ES_ccs_n5
## [1] 5648.979
Ovviamente, si nota come l’errore standard sia aumentato rispetto al valore ottenuto per n=20
# in media le stime forniscono un valore molto vicino al parametro mu
mean(res_n5)
## [1] 11663.65
mean(res_n5)-mu
## [1] -16.42203
#la differenza tra la media delle stime e il parametro mu: -16.42203
(-16.42203/11680.07)*100
## [1] -0.1405987
# corrisponde ad un errore pari allo 0.14% di mu
Quanto sono variabili le 500 stime precedentemente ottenute?
# si nota come il valore sia vicino a quello fornito dalla teoria (ES_ccs_n5)
sd(res_n5)
## [1] 5821.66
Si nota chiaramente che le stime sono meno variabili e quindi maggiormente precise per n=20