Bootstrap 1.

Bootstrap i jego zastosowanie

Bootstrap jest techniką statystyczną stosowaną w analizie danych do estymacji rozkładu próby lub parametrów populacji. Metoda ta polega na wielokrotnym losowaniu prób z powtórzeniami ze zbioru danych oryginalnego w celu tworzenia próbek bootstrapowych.Jego etapy to losowanie próbek, obliczanie statystyk, powtarzanie procesu i analiza otrzymanych wyników.

Funkcje z zadań:

Funkcja sample() jest używana do losowego wyboru elementów z wektora lub sekwencji liczb. Funkcja rnorm() służy do generowania losowych liczb z rozkładu normalnego (Gaussa). Funkcja replicate() służy do wielokrotnego wykonania określonego wyrażenia lub funkcji. Funkcja boot() z pakietu boot służy do wykonania metody bootstrap. Metoda bootstrap jest wykorzystywana do estymacji rozkładu próbkowego lub parametrów statystycznych na podstawie próby losowej. Funkcja boot.ci() z pakietu boot służy do obliczania przedziałów ufności na podstawie wyników metody bootstrap.

library(bootstrap)
library(boot)
## Warning: pakiet 'boot' został zbudowany w wersji R 4.1.3
# Losowanie ze zwracaniem
set.seed(123) 
losowanie_ze_zwracaniem <- sample(1:10, size = 10, replace = TRUE)
print(losowanie_ze_zwracaniem)
##  [1]  3  3 10  2  6  5  4  6  9 10
# Losowanie bez zwracania
set.seed(123) 
losowanie_bez_zwracania <- sample(1:10, size = 10, replace = FALSE)
print(losowanie_bez_zwracania)
##  [1]  3 10  2  8  6  9  1  7  5  4

ZADANIE 1.

# I) Generowanie przykładowej populacji
set.seed(123) 
populacja <- rnorm(25, mean = 3, sd = 1)

Przykładowa populacja o rozkładzie normalnym o średniej 3 i odchyleniu standardowym 1 przy użyciu funkcji rnorm().

# II) Generowanie prób bootstrapowych
licznosc <- 25  # Liczność próby
R <- 1000  # Liczba replikacji bootstrap
przypadkowe_probki <- replicate(R, sample(populacja, licznosc, replace = TRUE))

Generowanie 1000 prób bootstrapowych o liczności 25 z danych populacji przy użyciu funkcji replicate().

# III) Obliczanie średniej z prób bootstrapowych
srednie_bootstrapowe <- apply(przypadkowe_probki, 2, mean)

# Histogram rozkładu średnich prób bootstrapowych
hist(srednie_bootstrapowe, breaks = 30, col = "pink", main = "Rozkład średnich prób bootstrapowych",
     xlab = "Średnia prób bootstrapowych")

curve(dnorm(x, mean = mean(srednie_bootstrapowe), sd = sd(srednie_bootstrapowe)),
    col = "green", lwd = 2, lty = 2, n = 1000, xlim = c(2, 4))

Obliczanie średniej dla każdej z 1000 wylosowanych prób bootstrapowych i przedstawienie na histogramie rozkładu tych średnich. Dodatkowo porównanie tego rozkładu z rozkładem cechy (normalnym N(3,1)).

Na podstawie porównania kształtów obu rozkładów można ocenić, czy przybliżenie rozkładu metodą bootstrap jest adekwatne. Histogram średnich prób bootstrapowych jest podobny do rozkładu normalnego N(3,1), to znaczy, że przybliżenie jest adekwatne.

# IV) Porównanie średnich prób bootstrapowych i średniej wyjściowej
srednia_wyjsciowa <- mean(populacja)
srednia_bootstrapowa <- mean(srednie_bootstrapowe)
roznica_srednich <- srednia_wyjsciowa - srednia_bootstrapowa

# Wyświetlenie wyników
cat("Średnia wyjściowa:", srednia_wyjsciowa, "\n")
## Średnia wyjściowa: 2.96667
cat("Średnia prób bootstrapowych:", srednia_bootstrapowa, "\n")
## Średnia prób bootstrapowych: 2.957016
cat("Różnica średnich:", roznica_srednich, "\n")
## Różnica średnich: 0.009653242

Porównanie średniej wygenerowanej próby wyjściowej ze średnią wektora średnich z prób bootstrapowych oraz różnica między nimi.

Średnia wartość z oryginalnej próby wynosi 2.96667. Średnia wartość z prób bootstrapowych wynosi 2.957016, i została ona obliczona na podstawie wielu prób bootstrapowych, które zostały wygenerowane przez próbkowanie z powtórzeniami z oryginalnej próby danych. Różnica między tymi średnimi może być oceniona jako miara błędu estymacji. Jako że różnica jest niewielka (0.009653242), oznacza to, że estymator jest dokładny i nie ma dużego błędu estymacji.Można także stwierdzić, że rozkład prób bootstrapowych dobrze odzwierciedla rozkład oryginalnych danych.

# V) Obliczenie błędu standardowego dla średniej za pomocą funkcji boot
library(boot)
boot_results <- boot(data = populacja, statistic = function(x, i) mean(x[i]),
                     R = 1000)
stderr_boot <- boot_results$se[1]

# Wynik
cat("Błąd standardowy (metoda boot):", stderr_boot, "\n")
## Błąd standardowy (metoda boot): 10403

Korzystając z funkcji boot() z pakietu boot, oblicza błąd standardowy dla średniej na podstawie populacji. Wynik ten jest przechowywany w zmiennej stderr_boot. Wyniki to średnia wyjściowa, średnia prób bootstrapowych, różnica średnich oraz błąd standardowy obliczony za pomocą funkcji boot(). Błąd standardowy wyniósł 10403, można zatem wnioskować, że estymator średniej ma znaczący rozrzut w próbach bootstrapowych. Niepewność estymacji tekże jest na wysokim poziomie.