Advertisement
Guest User

Untitled

a guest
Mar 25th, 2019
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
R 13.84 KB | None | 0 0
  1.  
  2. Jupyter Notebook
  3. tasks (autosaved) Current Kernel Logo
  4.  
  5. R
  6.  
  7.     File
  8.     Edit
  9.     View
  10.     Insert
  11.     Cell
  12.     Kernel
  13.     Widgets
  14.     Help
  15.  
  16. Statystyka i Analiza danych
  17. Laboratorium 4 - Estymatory
  18. Ćwiczenie 1: Badanie obciążenia estymatorów średniej i wariancji
  19.  
  20. Na początku utworzymy populację, losując 1000 liczb z rozkładu jednostajnego:
  21.  
  22. r_populacji  <- 1000
  23.  
  24. populacja  <- runif(r_populacji, 5, 17)
  25.  
  26. Następnie wygenerujemy 200 prób o rozmiarze 15:
  27.  
  28. r_proby  <- 15
  29.  
  30. l_prob  <- 200
  31.  
  32. losowe_indeksy  <- sample(1:r_populacji, size=r_proby*l_prob, replace=TRUE)
  33.  
  34. proby  <- matrix(populacja[losowe_indeksy], r_proby, l_prob)
  35.  
  36. colnames(proby)  <- paste(rep("próba",ncol(proby)),c(1:ncol(proby)))
  37.  
  38. proby
  39.  
  40. próba 1    próba 2    próba 3    próba 4    próba 5    próba 6    próba 7    próba 8    próba 9    próba 10   ⋯ próba 191  próba 192  próba 193  próba 194  próba 195  próba 196  próba 197  próba 198  próba 199  próba 200
  41. 15.160201   15.296949   13.078504   9.268245    11.267087   10.888393   16.865103   6.409879    13.160193   14.601772   ⋯     10.745377   6.624273    16.850464   14.222762   15.221310   12.462764   7.808162    11.335941   10.787924   11.739205
  42. 14.703625   8.553220    6.870213    8.300697    9.713647    5.686327    7.113473    16.013184   7.084809    14.737041   ⋯     15.272450   9.793772    9.748195    16.558372   16.112394   9.046858    11.107696   13.381309   6.591552    5.342793
  43. 10.745272   12.294237   16.089562   16.650988   6.933449    8.076921    12.090795   14.614683   7.811609    14.007549   ⋯     6.024012    14.955858   14.858754   12.252176   9.935913    14.005847   6.037345    15.069841   11.267087   14.222619
  44. 15.610811   10.805674   12.963348   16.929067   11.414537   13.386371   9.229793    9.156744    15.296949   8.637257    ⋯     12.949442   15.221310   8.971213    8.252338    15.184116   6.816494    7.178311    14.813612   9.229793    10.102255
  45. 12.412398   8.749829    12.471362   10.588298   16.650988   10.397426   13.636522   13.979815   9.136995    8.144563    ⋯     11.226738   15.091540   14.464854   11.363611   7.021929    8.859276    12.639002   12.079055   12.620164   11.771804
  46. 9.005699    8.147193    12.189577   11.185484   15.528979   9.699230    15.388945   12.526801   9.159189    9.250562    ⋯     5.612333    12.013992   13.666444   12.917636   11.363611   14.520554   7.721489    5.831549    6.560372    9.194455
  47. 7.214116    11.341846   11.885428   15.950255   6.624273    10.179300   6.560372    16.922905   13.005559   10.192081   ⋯     14.222762   15.602697   5.278099    15.610811   16.200056   12.083817   6.342212    14.582064   14.294059   6.744072
  48. 6.718891    12.875196   12.312887   10.242578   8.142513    8.100477    8.627789    12.743127   6.089393    13.354549   ⋯     14.698921   14.813612   15.151773   5.930632    7.555638    6.161223    12.057917   14.011737   11.218344   16.704586
  49. 6.544102    10.899469   13.103213   11.185219   11.456557   9.251455    6.707283    13.337641   5.429139    8.226922    ⋯     9.762208    16.990418   5.168161    6.037345    7.114289    11.228022   12.303139   16.160926   13.538683   6.612302
  50. 16.821080   5.911189    11.712927   16.075801   5.496858    14.078422   11.593828   11.771760   11.410482   13.777509   ⋯     11.677552   15.604183   6.707283    10.970828   13.036598   13.637850   12.935023   5.871832    10.884089   10.745272
  51. 14.445875   11.185484   14.847864   6.034645    6.239440    10.747500   10.895208   6.997664    13.907346   8.844898    ⋯     12.494460   10.803096   15.069841   16.534525   8.640712    9.395109    9.809192    5.386437    12.935023   9.312685
  52. 12.412398   8.944525    10.693038   7.025408    8.102209    7.021929    12.550521   16.654175   8.180215    6.582368    ⋯     12.462764   5.630928    12.431428   13.538683   8.271613    9.341215    5.512454    5.059440    14.362447   10.638388
  53. 13.835106   14.124481   14.011737   15.198739   15.562573   11.107696   16.922905   14.110770   12.013992   12.653085   ⋯     12.261640   9.208418    14.362447   12.959164   14.110770   14.351363   8.678959    10.221671   7.091188    16.865103
  54. 8.886989    9.966136    15.562573   9.030639    10.593196   15.503824   13.197693   7.384611    10.747500   7.948604    ⋯     5.930632    11.859398   14.858754   9.966136    14.020372   5.306505    15.927263   13.038785   13.240812   8.223292
  55. 6.436383    7.970771    8.141902    16.759138   14.901102   15.296949   12.462764   13.480826   6.167037    16.437025   ⋯     13.592175   15.388945   5.055378    14.955858   9.375289    5.141648    6.454045    11.771760   13.956532   5.169949
  56.  
  57. Oblicz statystyki opisowe dla populacji:
  58.  
  59. pop_var  <- function(data)
  60.  
  61. {
  62.  
  63.     mean(((data)-mean(data))^2)
  64.  
  65. }
  66.  
  67.  
  68. opis_popul  <- c("średnia"=mean(populacja), "wariancja"=pop_var(populacja), "odchylenie standardowe"=sqrt(pop_var(populacja)))
  69.  
  70. opis_popul
  71.  
  72. średnia
  73.     11.0731457250826
  74. wariancja
  75.     11.9587769034825
  76. odchylenie standardowe
  77.     3.45814645489205
  78.  
  79. Dla każdej próby wyznacz estymator średniej, estymator wariancji oraz obciążoną wersję estymatora wariancji. Możesz użyć funkcji apply.
  80.  
  81. estymator_srednia  <- apply(proby, 2, mean)#TODO
  82.  
  83. estymator_wariancja  <- apply(proby, 2, var)#TODO
  84.  
  85. obciazony_estymator_wariancja  <- apply(proby, 2, pop_var)#TODO
  86.  
  87. Następnie dla każdego z estymatorów wyznacz wartość oczekiwaną (uśredniając po próbach) oraz obciążenie:
  88.  
  89. wiersze  <- c("Wartość oczekiwana", "Obciążenie")
  90.  
  91. kolumny  <- c("Estymator średnia", "Estymator wariancja", "Estymator obciążony wariancja")
  92.  
  93.  
  94. wartosci_oczekiwane  <- c(mean(estymator_srednia), mean(estymator_wariancja), mean(obciazony_estymator_wariancja))#TODO wartości oczekiwane estymatora średniej, wariancji i obciążonego estymatora wariancji  
  95.  
  96. obciazenia  <- wartosci_oczekiwane - c(mean(populacja), pop_var(populacja), pop_var(populacja))#TODO obciążenia estymatora średniej, wariancji i obciążonego estymatora wariancji
  97.  
  98.  
  99. matrix(c(rbind(wartosci_oczekiwane, obciazenia)), length(wiersze), length(kolumny), dimnames=list(wiersze, kolumny))
  100.  
  101.     Estymator średnia  Estymator wariancja Estymator obciążony wariancja
  102. Wartość oczekiwana    10.99987875 11.93152122 11.1360865
  103. Obciążenie    -0.07326697 -0.02725568 -0.8226904
  104.  
  105. Dla estymatora wartości średniej policz dodatkowo odchylenie standardowe i teoretyczne odchylenie standardowe:
  106.  
  107. c("Odchylenie standardowe"=sd(estymator_srednia),"Teoretyczne"=sqrt(pop_var(populacja))/sqrt(r_proby))
  108.  
  109. Odchylenie standardowe
  110.     0.891186011483564
  111. Teoretyczne
  112.     0.892889575236208
  113.  
  114. Utwórz histogram wartości estymatora średniej:
  115.  
  116. hist(estymator_srednia)
  117.  
  118. Ćwiczenie 2: Badanie estymacji przedziałowej.
  119.  
  120. Na początek wygenerujemy 200 prób o rozmiarze 20 z rozkładu normalnego.
  121.  
  122. r_proby  <- 15
  123.  
  124. l_prob  <- 200
  125.  
  126. m  <- 0
  127.  
  128. sigma  <- 1
  129.  
  130.  
  131. proby  <- matrix(rnorm(r_proby*l_prob, m, sigma), r_proby, l_prob)
  132.  
  133. colnames(proby)  <- paste(rep("próba",ncol(proby)),c(1:ncol(proby)))
  134.  
  135. proby
  136.  
  137. próba 1    próba 2    próba 3    próba 4    próba 5    próba 6    próba 7    próba 8    próba 9    próba 10   ⋯ próba 191  próba 192  próba 193  próba 194  próba 195  próba 196  próba 197  próba 198  próba 199  próba 200
  138. 0.6658226   0.15758348  -0.3860794  -0.21378749     -0.83252910     0.7083277   -1.2880802  -0.729264578    0.08785690  -0.2728029  ⋯     0.07278768  -1.40971005     -0.50729064     -0.76785878     0.02675600  0.5276485   0.07090676  -0.8232704  -1.28054805     -0.27574131
  139. -0.8038243  0.01082990  -1.3484597  -1.30947925     -0.70869511     0.4680760   0.2192785   0.856194988 0.51774277  -0.4506590  ⋯     -0.12864691     0.16536000  -1.90454720     -0.31190863     -2.55378228     -0.7089792  -0.06660622     0.7195291   -0.70601635     0.13919185
  140. -0.6577922  1.21929756  -2.3161916  -0.89963585     0.12572079  -0.2140522  0.4972469   0.419497648 1.35276362  -0.5350327  ⋯     -0.48545878     1.24153674  0.06641387  0.90966846  0.94081161  -1.2123866  -1.40752576     -0.8702983  -1.85287610     -1.00431117
  141. 0.1764843   0.23026620  -0.2321645  -0.88921248     -0.85346186     -1.0182911  1.7330513   1.222773747 -0.13200503     -0.8396685  ⋯     0.55049138  0.38068541  -0.24571081     -0.73404890     0.34294789  -1.7665486  2.69424017  -1.0164142  -1.26643008     0.01219779
  142. 0.8153175   -0.49173830     1.2450699   -2.17899518     -0.55643576     0.3728507   -0.1092705  -1.084102687    0.67001445  -0.6507389  ⋯     -0.31091889     0.15530157  0.58285368  -0.31094123     -0.16192885     1.5401871   -0.44674856     0.7215959   1.57515329  0.04146870
  143. 1.3825148   0.75389145  1.1917105   -0.09114462     -1.16438498     -1.3278581  1.7402334   0.495168168 -0.12922557     0.2346299   ⋯     -0.86729955     0.70704722  1.96893319  0.03522717  -2.18215029     -0.7177824  0.43650095  0.6057339   1.70570093  -1.40677935
  144. -0.1841819  -0.21352555     0.8478233   0.16344024  -1.32122586     0.8422108   -0.6927548  -0.007548572    0.39563291  0.4891056   ⋯     -0.08640684     -0.60630819     0.85852205  -0.20191892     0.17266291  2.2493205   -0.12961331     1.3888840   -1.25702711     -0.08007909
  145. -1.5311719  0.41249987  2.4511646   1.19750047  -0.30606649     0.5799548   0.3458584   0.942357467 -0.02710981     -0.7536044  ⋯     0.61270120  0.75514291  -0.35374469     -0.03108741     0.11205776  -0.2973504  0.72173392  -0.8149177  0.80635738  -0.81958599
  146. -1.1891787  -0.75908917     1.1285484   -1.07718288     0.87127979  0.2770273   0.6904173   1.272040711 0.76246736  0.5083593   ⋯     -0.35466853     -2.25435704     -0.02150650     -1.26602783     -0.65650434     -0.6843763  -1.03282745     0.8287475   1.81377790  0.41088485
  147. -0.1566184  -0.02699663     1.1684149   -0.12900799     0.85813912  0.3498861   0.5023927   0.458136502 0.96837459  -0.1483920  ⋯     0.50201038  0.08878806  -0.58845886     0.55138266  -1.80162637     1.0107054   -1.80490435     -0.4858480  1.42855506  -0.09136728
  148. -0.5807897  1.82332738  0.9646389   0.04418968  -0.24495268     -0.4541257  -0.9493277  -1.402354825    -0.80055992     0.6880727   ⋯     0.20444072  0.26709518  1.64975892  -0.65580268     -0.02279399     0.3468451   0.60092232  0.4191574   0.09809423  1.86269367
  149. -1.2081594  -0.56087031     0.5503333   1.07603894  -0.03936719     -1.6650421  -0.6005238  -0.023130096    0.57628961  0.9640840   ⋯     0.24745047  -0.28019905     0.60234831  1.78591027  0.09470553  -0.2700042  0.17323677  0.7732823   -0.11350932     -1.63438935
  150. 0.1834968   -1.58911116     0.3536155   -0.56712039     -0.63290055     1.0595239   0.1221082   -0.544559712    0.01644771  0.7532984   ⋯     -0.12659396     -0.85048641     0.69040305  -0.67326162     -1.21034462     0.1170470   -0.15570579     -0.1222836  -1.22995344     1.91864401
  151. -0.6953897  0.12956690  1.2159118   -0.17970914     -0.56289492     -0.2193671  -0.3578429  -0.305097710    1.16493206  -0.4286505  ⋯     0.44384915  0.80995157  0.77593248  0.75124573  1.96241853  -0.2143189  1.30085894  0.5944741   -0.33690920     2.26119710
  152. -0.7463438  1.53887665  -1.2630109  1.35168616  0.16880210  -1.0357537  0.8362178   0.856163807 0.42215542  -0.3996573  ⋯     0.85999400  0.33997057  1.72338864  0.11845433  0.39916603  1.0934080   0.25455626  0.2928118   0.55865238  -0.62838200
  153.  
  154. Wyznacz kolejno dla każdej próby estymator średniej (możesz użyć funkcji apply), lewy i prawy koniec przedziału, szerokość przedziału oraz wypisz czy prawdziwa średnia znalazła się w przedziale.
  155.  
  156. poziom_istotnosci  <- 0.05
  157.  
  158. kwantyl  <- qnorm(1-poziom_istotnosci/2, m, sigma)
  159.  
  160. delta <- kwantyl * sigma/sqrt(r_proby)
  161.  
  162.  
  163. estymator_srednia  <- apply(proby, 2, mean)#TODO
  164.  
  165. l_koniec_przedzialu  <- estymator_srednia - delta#TODO
  166.  
  167. p_koniec_przedzialu  <- estymator_srednia + delta#TODO
  168.  
  169. szerokosc_przedzialu  <- 2*delta#TODO
  170.  
  171. czy_srednia_w_przedziale  <- (m > l_koniec_przedzialu) * (m < p_koniec_przedzialu)#TODO
  172.  
  173.  
  174. round(matrix(c(rbind(estymator_srednia, l_koniec_przedzialu, p_koniec_przedzialu, szerokosc_przedzialu, czy_srednia_w_przedziale)), 5, l_prob, dimnames = list(c("Estymator średniej", "L koniec przedziału", "P koniec przedziału", "Szerokość przedziału", "Średnia w przedziale?"),colnames(proby))),3)
  175.  
  176.     próba 1    próba 2    próba 3    próba 4    próba 5    próba 6    próba 7    próba 8    próba 9    próba 10   ⋯ próba 191  próba 192  próba 193  próba 194  próba 195  próba 196  próba 197  próba 198  próba 199  próba 200
  177. Estymator średniej -0.302  0.176   0.371   -0.247  -0.347  -0.085  0.179   0.162   0.390   -0.056  ⋯     0.076   -0.033  0.353   -0.053  -0.303  0.068   0.081   0.147   -0.004  0.047
  178. L koniec przedziału    -0.808  -0.330  -0.135  -0.753  -0.853  -0.591  -0.327  -0.344  -0.116  -0.562  ⋯     -0.430  -0.539  -0.153  -0.559  -0.809  -0.438  -0.425  -0.359  -0.510  -0.459
  179. P koniec przedziału    0.204   0.682   0.877   0.259   0.159   0.421   0.685   0.668   0.896   0.450   ⋯     0.582   0.473   0.859   0.453   0.204   0.574   0.587   0.653   0.502   0.553
  180. Szerokość przedziału 1.012   1.012   1.012   1.012   1.012   1.012   1.012   1.012   1.012   1.012   ⋯     1.012   1.012   1.012   1.012   1.012   1.012   1.012   1.012   1.012   1.012
  181. Średnia w przedziale?  1.000   1.000   1.000   1.000   1.000   1.000   1.000   1.000   1.000   1.000   ⋯     1.000   1.000   1.000   1.000   1.000   1.000   1.000   1.000   1.000   1.000
  182.  
  183. Następnie wyznacz prawdopodobieństwo uśredniając po 200 próbach. Czy zmiana m i sigma wpływa na to prawdopodobieństwo?
  184.  
  185. c("Pr(średnia w przedziale)"=mean(czy_srednia_w_przedziale))
  186.  
  187. Pr(średnia w przedziale): 0.975
  188. Ćwiczenie 3: Badanie zgodności estymatorów średniej i wariancji
  189.  
  190. Zacznij od wygenerowania n losowych liczb z rozkładu normalnego:
  191.  
  192. n  <- 1000
  193.  
  194. m  <- 0
  195.  
  196. sigma  <- 1
  197.  
  198.  
  199. losowe  <- #TODO
  200.  
  201. Wyznacz wartości estymatora średniej oraz wariancji i porównaj ją z prawdziwymi wartościami dla rosnącej liczby zmiennych (możesz użyć funkcji sample). Błąd przyjmij w sensie kwadratu różnicy między wartością prawdziwą a estymowaną.
  202.  
  203. estymatory  <- matrix(rep(0, (n-1)*4), n-1, 4, dimnames=list(1:(n-1),c("Średnia", "Wariancja", "Błąd średnia", "Błąd wariancja")))
  204.  
  205.  
  206. for (i in (2:n))
  207.  
  208. {
  209.  
  210.     estymatory[i-1,"Średnia"]  <- #TODO
  211.  
  212.     estymatory[i-1,"Wariancja"]  <- #TODO
  213.  
  214. }
  215.  
  216.  
  217. estymatory[,"Błąd średnia"]  <- #TODO
  218.  
  219. estymatory[,"Błąd wariancja"]  <- #TODO
  220.  
  221.  
  222. estymatory
  223.  
  224. plot_estimate  <- function(data, estimate_name, error_name, plot_name, true_value)
  225.  
  226. {
  227.  
  228.     y_limits  <- c(min(0,min(data[,estimate_name])),max(max(data[,estimate_name]),max(data[,error_name])))
  229.  
  230.     plot(data[,estimate_name], t='l',col='blue', ylab="wartość", xlab="n", main=plot_name, ylim=(y_limits))
  231.  
  232.     lines(data[,error_name], col='red')
  233.  
  234.     abline(h=true_value, col='green')
  235.  
  236.     e_name  <- tolower(estimate_name)
  237.  
  238.     legend('topright', c(paste("Estymator",e_name), error_name, paste("Prawdziwa wartość",e_name)), lty=1, col=c('blue', 'red', 'green'))
  239.  
  240. }
  241.  
  242. Utwórz wykresy estymatora średniej oraz wariancji i ich błędu dla rosnącej ilości zmiennych. Skorzystaj z funkcji plot_estimate. Wykres dla estymatora średniej:
  243.  
  244. #TODO wykres dla estymatora średniej
  245.  
  246. Wykres dla estymatora wariancji:
  247.  
  248. #TODO wykres dla estymatora wariancji
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement