Wygeneruj ciąg losowo wybranych liczb z zakresu od 1 do 10. Zastosuj losowanie ze zwracaniem i bez zwracania.

sample(1:10) #bez zwracania
##  [1]  4 10  9  7  8  5  2  1  6  3
sample(1:10, replace=TRUE) #ze zwracaniem==
##  [1] 9 5 4 5 8 2 4 6 8 3

Zadanie 1. Estymacja błędu standardowego średniej próbkowej metodą bootstrap. Załóżmy, że chcemy badać populację o rozkładzie normalnym ze średnią 3 i odchyleniem standardowym 1.

Wygeneruj przykładową populację liczności 25 o takim rozkładzie (funkcja rnorm())

rn <- rnorm(25, mean=3, sd=1) 

Wygeneruj 1000 prób o liczności 25 z otrzymanych danych (funkcja replicate()).

proby_1000 <- replicate(1000, rnorm(25, mean=3, sd=1))  

Oblicz średnią każdej z 1000 wylosowanych prób bootstrapowych

srednia <- apply(proby_1000, 2, mean) 

Porównaj ten rozkład z rozkładem cechy (rozkładem normalnym N (3;1)). Oceń, czy przybliżenie rozkładu metodą bootstrap jest adekwatne (czy kształty obu rozkładów są podobne)

hist(srednia) 

hist(rn)

hist(rnorm(25,3,1))

Powyzej przedstawiono 3 histogramy. Histogram srednia nie jest symetryczny. Histogram rn (rozklad normlany) pokazuje jak ksztaltuja sie wyniki rn. Histogram rnorm (25,3,1) prezentuje wyniki dla średniej 3 i odchylenia 1.

Kształt 1 i 2 histogramu jest podobny.

Porównaj średnią wygenerowanej próby wyjściowej ze średnią wektora średnich z prób bootstrapowych. Oceń ich różnicę.

mean(rn)
## [1] 2.94824
mean(srednia)
## [1] 2.996395

Średnie różnią się od siebie.

Przy użyciu funkcji boot (pakiet boot) wyznacz błąd standardowy dla średniej.

sd.boot=function(srednia, idx){
  ans=sd(srednia[idx])
}

boot(srednia, statistic = sd.boot, R=1000)
## 
## ORDINARY NONPARAMETRIC BOOTSTRAP
## 
## 
## Call:
## boot(data = srednia, statistic = sd.boot, R = 1000)
## 
## 
## Bootstrap Statistics :
##      original        bias    std. error
## t1* 0.1988978 -0.0001617877 0.004512747

Zadanie 2. Estymacja przedziałowa średniej metodą bootstrap.

Wygeneruj próbkę losową 50 obserwacji wybranej zmiennej z pliku dane.sav (funkcja sample()). Jako populację potraktuj cały zbiór N-obserwacji w pliku.

setwd("C://Users//kinit//Downloads")
dane <- read.spss("dane.sav", to.data.frame = TRUE, use.value.labels = TRUE)

pm <- sample(dane$Powierzchnia_mieszkalna, 50)
pm
##  [1]  60  74  59  50  50 190  35  54  63  70  42 100 130  96  54  48  80 168 120
## [20] 220  25 120  65  58  51  84  87  63  60  57  30  48  44  25  45  43 250 100
## [39]  74  32  70  70  38  60  63 180  62 114  39 200

Oszacuj przedziałowo (klasycznie – stosując aproksymację rozkładem normalnym) oraz nieklasycznie (stosując funkcję boot.ci()) średnią wybranej zmiennej w próbce. Oblicz oraz porównaj oba błędy standardowe (względny %) estymacji przedziałowej klasycznej i nieklasycznej. Podaj wnioski.

klasycznie <- sd(pm)/sqrt(pm)
klasycznie
##  [1]  6.722234  6.053038  6.778963  7.363839  7.363839  3.777570  8.801471
##  [8]  7.085857  6.560229  6.223580  8.034607  5.207020  4.566859  5.314393
## [15]  7.085857  7.515687  5.821626  4.017303  4.753338  3.510572 10.414041
## [22]  4.753338  6.458514  6.837153  7.291287  5.681325  5.582512  6.560229
## [29]  6.722234  6.896867  9.506675  7.515687  7.849879 10.414041  7.762168
## [36]  7.940632  3.293209  5.207020  6.053038  9.204799  6.223580  6.223580
## [43]  8.446902  6.722234  6.560229  3.881084  6.612922  4.876821  8.337906
## [50]  3.681919
dolny <- mean(mean(pm)-1.96*klasycznie)
gorny <- mean(mean(pm)+1.96*klasycznie)

dolny
## [1] 67.61807
gorny
## [1] 93.18193

Odchylenie standardowe

sd(pm)
## [1] 52.0702

Nieklasycznie

mean.boot=function(pm, idx){
  ans=mean(pm[idx])
}

srednia_boot_pm=boot(pm, statistic = mean.boot, R=50)
class(srednia_boot_pm)
## [1] "boot"
names(srednia_boot_pm)
##  [1] "t0"        "t"         "R"         "data"      "seed"      "statistic"
##  [7] "sim"       "call"      "stype"     "strata"    "weights"
plot(srednia_boot_pm)

boot.ci(srednia_boot_pm, conf = 0.95, type=c("norm","perc"))
## BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
## Based on 50 bootstrap replicates
## 
## CALL : 
## boot.ci(boot.out = srednia_boot_pm, conf = 0.95, type = c("norm", 
##     "perc"))
## 
## Intervals : 
## Level      Normal             Percentile     
## 95%   (66.88, 94.94 )   (67.04, 94.70 )  
## Calculations and Intervals on Original Scale
## Some percentile intervals may be unstable

Średnia oszacowana w sposób nieklasyczny zawiera się w przedziale od 71,60 do 98,02, średnia określona klasycznie mieści się w tymże przedziale.

Nieklasycznie - odchylenie standardowe

sd.boot1=function(x, idx){
  ans=sd(x[idx])
}

odch_nieklas_pm=boot(pm,statistic = sd.boot1, R=50)
class(odch_nieklas_pm)
## [1] "boot"
names(odch_nieklas_pm)
##  [1] "t0"        "t"         "R"         "data"      "seed"      "statistic"
##  [7] "sim"       "call"      "stype"     "strata"    "weights"
plot(odch_nieklas_pm)

Odchylenie standardowe nieklasyczne

boot.ci(odch_nieklas_pm, conf = 0.95, type=c("norm","perc"))
## BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
## Based on 50 bootstrap replicates
## 
## CALL : 
## boot.ci(boot.out = odch_nieklas_pm, conf = 0.95, type = c("norm", 
##     "perc"))
## 
## Intervals : 
## Level      Normal             Percentile     
## 95%   (38.58, 66.16 )   (36.84, 64.23 )  
## Calculations and Intervals on Original Scale
## Some percentile intervals may be unstable

Odchylenie mieści się między 30,44 i 54,67. Odchylenie standardowe klasyczne również mieści się w tym zakresie.

Można zatem stwierdzić, że zarówno średnie i odchylenia standardowe obliczone metodą klasyczną i nieklasyczną są poprawne i pokrywają sie.

LS0tDQp0aXRsZTogIk5pZWtsYXN5Y3puZSBtZXRvZHkgc3RhdHlzdHlraSINCmF1dGhvcjogIkZpbGlwIERyYWpza2ksIEtpbmdhIFdhc3pjenlrIg0KZGF0ZTogImByIFN5cy5EYXRlKClgIg0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50Og0KICAgIHRoZW1lOiBjZXJ1bGVhbg0KICAgIGhpZ2hsaWdodDogdGV4dG1hdGUNCiAgICBmb250c2l6ZTogMTBwdA0KICAgIHRvYzogeWVzDQogICAgY29kZV9kb3dubG9hZDogeWVzDQogICAgdG9jX2Zsb2F0Og0KICAgICAgY29sbGFwc2VkOiBubw0KICAgIGRmX3ByaW50OiBkZWZhdWx0DQogICAgdG9jX2RlcHRoOiA1DQogIHBkZl9kb2N1bWVudDoNCiAgICB0b2M6IHllcw0KICAgIHRvY19kZXB0aDogJzUnDQpzdWJ0aXRsZTogTGFiIDYNCmVkaXRvcl9vcHRpb25zOg0KICBtYXJrZG93bjoNCiAgICB3cmFwOiA3Mg0KLS0tDQoNCmBgYHtyLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBlY2hvPUZBTFNFfQ0KbGlicmFyeShib290KQ0KbGlicmFyeShmb3JlaWduKQ0KYGBgDQoNCld5Z2VuZXJ1aiBjacSFZyBsb3Nvd28gd3licmFueWNoIGxpY3piIHogemFrcmVzdSBvZCAxIGRvIDEwLiBaYXN0b3N1aiBsb3Nvd2FuaWUgemUgendyYWNhbmllbSBpIGJleiB6d3JhY2FuaWEuDQoNCmBgYHtyfQ0Kc2FtcGxlKDE6MTApICNiZXogendyYWNhbmlhDQpgYGANCmBgYHtyfQ0Kc2FtcGxlKDE6MTAsIHJlcGxhY2U9VFJVRSkgI3plIHp3cmFjYW5pZW09PQ0KYGBgDQpaYWRhbmllIDEuIEVzdHltYWNqYSBixYLEmWR1IHN0YW5kYXJkb3dlZ28gxZtyZWRuaWVqIHByw7Nia293ZWogbWV0b2TEhSBib290c3RyYXAuIFphxYLDs8W8bXksIMW8ZSBjaGNlbXkgYmFkYcSHIHBvcHVsYWNqxJkgbyByb3prxYJhZHppZSBub3JtYWxueW0gemUgxZtyZWRuacSFIDMgaSBvZGNoeWxlbmllbSBzdGFuZGFyZG93eW0gMS4NCg0KV3lnZW5lcnVqIHByenlrxYJhZG93xIUgcG9wdWxhY2rEmSBsaWN6bm/Fm2NpIDI1IG8gdGFraW0gcm96a8WCYWR6aWUgKGZ1bmtjamEgcm5vcm0oKSkNCmBgYHtyfQ0Kcm4gPC0gcm5vcm0oMjUsIG1lYW49Mywgc2Q9MSkgDQpgYGANCg0KV3lnZW5lcnVqIDEwMDAgcHLDs2IgbyBsaWN6bm/Fm2NpIDI1IHogb3RyenltYW55Y2ggZGFueWNoIChmdW5rY2phIHJlcGxpY2F0ZSgpKS4NCmBgYHtyfQ0KcHJvYnlfMTAwMCA8LSByZXBsaWNhdGUoMTAwMCwgcm5vcm0oMjUsIG1lYW49Mywgc2Q9MSkpCQ0KYGBgDQoNCk9ibGljeiDFm3JlZG5pxIUga2HFvGRlaiB6IDEwMDAgd3lsb3Nvd2FueWNoIHByw7NiIGJvb3RzdHJhcG93eWNoIA0KYGBge3J9DQpzcmVkbmlhIDwtIGFwcGx5KHByb2J5XzEwMDAsIDIsIG1lYW4pIA0KYGBgDQoNClBvcsOzd25haiB0ZW4gcm96a8WCYWQgeiByb3prxYJhZGVtIGNlY2h5IChyb3prxYJhZGVtIG5vcm1hbG55bSBOICgzOzEpKS4gT2NlxYQsIGN6eSBwcnp5YmxpxbxlbmllIHJvemvFgmFkdSBtZXRvZMSFIGJvb3RzdHJhcCBqZXN0IGFkZWt3YXRuZSAoY3p5IGtzenRhxYJ0eSBvYnUgcm96a8WCYWTDs3cgc8SFIHBvZG9ibmUpDQpgYGB7cn0NCmhpc3Qoc3JlZG5pYSkgDQpgYGANCg0KYGBge3J9DQpoaXN0KHJuKQ0KYGBgDQoNCmBgYHtyfQ0KaGlzdChybm9ybSgyNSwzLDEpKQ0KYGBgDQoNClBvd3l6ZWogcHJ6ZWRzdGF3aW9ubyAzIGhpc3RvZ3JhbXkuIA0KSGlzdG9ncmFtIHNyZWRuaWEgbmllIGplc3Qgc3ltZXRyeWN6bnkuDQpIaXN0b2dyYW0gcm4gKHJvemtsYWQgbm9ybWxhbnkpIHBva2F6dWplIGphayBrc3p0YWx0dWphIHNpZSB3eW5pa2kgcm4uDQpIaXN0b2dyYW0gcm5vcm0gKDI1LDMsMSkgcHJlemVudHVqZSB3eW5pa2kgZGxhIMWbcmVkbmllaiAzIGkgIG9kY2h5bGVuaWEgMS4NCg0KS3N6dGHFgnQgMSBpIDIgaGlzdG9ncmFtdSBqZXN0IHBvZG9ibnkuDQoNClBvcsOzd25haiDFm3JlZG5pxIUgd3lnZW5lcm93YW5laiBwcsOzYnkgd3lqxZtjaW93ZWogemUgxZtyZWRuacSFIHdla3RvcmEgxZtyZWRuaWNoIHogcHLDs2IgYm9vdHN0cmFwb3d5Y2guIE9jZcWEIGljaCByw7PFvG5pY8SZLg0KYGBge3J9DQptZWFuKHJuKQ0KYGBgDQoNCmBgYHtyfQ0KbWVhbihzcmVkbmlhKQ0KYGBgDQrFmnJlZG5pZSByw7PFvG5pxIUgc2nEmSBvZCBzaWViaWUuDQoNClByenkgdcW8eWNpdSBmdW5rY2ppIGJvb3QgKHBha2lldCBib290KSB3eXpuYWN6IGLFgsSFZCBzdGFuZGFyZG93eSBkbGEgxZtyZWRuaWVqLg0KDQpgYGB7cn0NCnNkLmJvb3Q9ZnVuY3Rpb24oc3JlZG5pYSwgaWR4KXsNCiAgYW5zPXNkKHNyZWRuaWFbaWR4XSkNCn0NCg0KYm9vdChzcmVkbmlhLCBzdGF0aXN0aWMgPSBzZC5ib290LCBSPTEwMDApDQpgYGANCg0KWmFkYW5pZSAyLiBFc3R5bWFjamEgcHJ6ZWR6aWHFgm93YSDFm3JlZG5pZWogbWV0b2TEhSBib290c3RyYXAuDQoNCld5Z2VuZXJ1aiBwcsOzYmvEmSBsb3Nvd8SFIDUwIG9ic2Vyd2Fjamkgd3licmFuZWogem1pZW5uZWogeiBwbGlrdSBkYW5lLnNhdiAoZnVua2NqYSBzYW1wbGUoKSkuIEpha28gcG9wdWxhY2rEmSBwb3RyYWt0dWogY2HFgnkgemJpw7NyIE4tb2JzZXJ3YWNqaSB3IHBsaWt1Lg0KYGBge3J9DQpzZXR3ZCgiQzovL1VzZXJzLy9raW5pdC8vRG93bmxvYWRzIikNCmRhbmUgPC0gcmVhZC5zcHNzKCJkYW5lLnNhdiIsIHRvLmRhdGEuZnJhbWUgPSBUUlVFLCB1c2UudmFsdWUubGFiZWxzID0gVFJVRSkNCg0KcG0gPC0gc2FtcGxlKGRhbmUkUG93aWVyemNobmlhX21pZXN6a2FsbmEsIDUwKQ0KcG0NCmBgYA0KT3N6YWN1aiBwcnplZHppYcWCb3dvIChrbGFzeWN6bmllIOKAkyBzdG9zdWrEhWMgYXByb2tzeW1hY2rEmSByb3prxYJhZGVtIG5vcm1hbG55bSkgb3JheiBuaWVrbGFzeWN6bmllIChzdG9zdWrEhWMgZnVua2NqxJkgYm9vdC5jaSgpKSDFm3JlZG5pxIUgd3licmFuZWogem1pZW5uZWogdyBwcsOzYmNlLiBPYmxpY3ogb3JheiBwb3LDs3duYWogb2JhIGLFgsSZZHkgc3RhbmRhcmRvd2UgKHd6Z2zEmWRueSAlKSBlc3R5bWFjamkgcHJ6ZWR6aWHFgm93ZWoga2xhc3ljem5laiBpIG5pZWtsYXN5Y3puZWouIFBvZGFqIHduaW9za2kuIA0KDQpgYGB7cn0NCmtsYXN5Y3puaWUgPC0gc2QocG0pL3NxcnQocG0pDQprbGFzeWN6bmllDQpgYGANCg0KDQpgYGB7cn0NCmRvbG55IDwtIG1lYW4obWVhbihwbSktMS45NiprbGFzeWN6bmllKQ0KZ29ybnkgPC0gbWVhbihtZWFuKHBtKSsxLjk2KmtsYXN5Y3puaWUpDQoNCmRvbG55DQpgYGANCg0KYGBge3J9DQpnb3JueQ0KYGBgDQpPZGNoeWxlbmllIHN0YW5kYXJkb3dlIA0KDQpgYGB7cn0NCnNkKHBtKQ0KYGBgDQpOaWVrbGFzeWN6bmllIA0KDQpgYGB7cn0NCm1lYW4uYm9vdD1mdW5jdGlvbihwbSwgaWR4KXsNCiAgYW5zPW1lYW4ocG1baWR4XSkNCn0NCg0Kc3JlZG5pYV9ib290X3BtPWJvb3QocG0sIHN0YXRpc3RpYyA9IG1lYW4uYm9vdCwgUj01MCkNCmNsYXNzKHNyZWRuaWFfYm9vdF9wbSkNCmBgYA0KDQpgYGB7cn0NCm5hbWVzKHNyZWRuaWFfYm9vdF9wbSkNCmBgYA0KDQpgYGB7cn0NCnBsb3Qoc3JlZG5pYV9ib290X3BtKQ0KYGBgDQoNCmBgYHtyfQ0KYm9vdC5jaShzcmVkbmlhX2Jvb3RfcG0sIGNvbmYgPSAwLjk1LCB0eXBlPWMoIm5vcm0iLCJwZXJjIikpDQpgYGANCsWacmVkbmlhIG9zemFjb3dhbmEgdyBzcG9zw7NiIG5pZWtsYXN5Y3pueSB6YXdpZXJhIHNpxJkgdyBwcnplZHppYWxlIG9kIDcxLDYwIGRvIDk4LDAyLCDFm3JlZG5pYSBva3JlxZtsb25hIGtsYXN5Y3puaWUgbWllxZtjaSBzacSZIHcgdHltxbxlIHByemVkemlhbGUuIA0KDQpOaWVrbGFzeWN6bmllIC0gb2RjaHlsZW5pZSBzdGFuZGFyZG93ZQ0KYGBge3J9DQpzZC5ib290MT1mdW5jdGlvbih4LCBpZHgpew0KICBhbnM9c2QoeFtpZHhdKQ0KfQ0KDQpvZGNoX25pZWtsYXNfcG09Ym9vdChwbSxzdGF0aXN0aWMgPSBzZC5ib290MSwgUj01MCkNCmNsYXNzKG9kY2hfbmlla2xhc19wbSkNCmBgYA0KDQpgYGB7cn0NCm5hbWVzKG9kY2hfbmlla2xhc19wbSkNCmBgYA0KDQpgYGB7cn0NCnBsb3Qob2RjaF9uaWVrbGFzX3BtKQ0KYGBgDQoNCk9kY2h5bGVuaWUgc3RhbmRhcmRvd2Ugbmlla2xhc3ljem5lDQpgYGB7cn0NCmJvb3QuY2kob2RjaF9uaWVrbGFzX3BtLCBjb25mID0gMC45NSwgdHlwZT1jKCJub3JtIiwicGVyYyIpKQ0KYGBgDQpPZGNoeWxlbmllIG1pZcWbY2kgc2nEmSBtacSZZHp5IDMwLDQ0IGkgNTQsNjcuIE9kY2h5bGVuaWUgc3RhbmRhcmRvd2Uga2xhc3ljem5lIHLDs3duaWXFvCBtaWXFm2NpIHNpxJkgdyB0eW0gemFrcmVzaWUuIA0KDQpNb8W8bmEgemF0ZW0gc3R3aWVyZHppxIcsIMW8ZSB6YXLDs3dubyDFm3JlZG5pZSBpIG9kY2h5bGVuaWEgc3RhbmRhcmRvd2Ugb2JsaWN6b25lIG1ldG9kxIUga2xhc3ljem7EhSBpIG5pZWtsYXN5Y3puxIUgc8SFIHBvcHJhd25lIGkgcG9rcnl3YWrEhSBzaWUu