Co to jest metoda jackknife?
Metoda jackknife (ang. jackknife, dosłownie scyzoryk) szacuje obciążenie i błąd standardowy statystyki, licząc ją n razy, za każdym razem bez jednej obserwacji. Wprowadził ją Quenouille do redukcji obciążenia, a Tukey rozszerzył na szacowanie wariancji i przedziały; przegląd tych prac przedstawił Miller (1974). Efron (1979) pokazał, że jackknife jest liniowym przybliżeniem bootstrapu.
Wzory
Niech θ̂ to oszacowanie z całej próby, θ̂(i) – oszacowanie bez i-tej obserwacji, a θ̄(·) – średnia z tych n oszacowań:
Oszacowanie skorygowane to θ̂ − obciążenie. Czynnik (n − 1) kompensuje to, że oszacowania bez jednej obserwacji są do siebie bardzo podobne. Wartości θ̂(i) służą też do wyznaczenia przyspieszenia w przedziale bootstrapowym BCa.
Przykład
U 25 osób korelacja wyniku skali stresu z długością snu wyniosła r = −.544 (dane symulowane). Jackknife oszacował obciążenie na +0.004, więc korelacja skorygowana to −.548. Błąd standardowy z jackknife wyniósł 0.134, a z 5000 prób bootstrapowych 0.128. Kontrola na wariancji: wersja z dzielnikiem n dała 97.83, a po korekcie jackknife 101.91, czyli dokładnie zwykłą wariancję z dzielnikiem n − 1.
Jak opisać w pracy
Na co uważać
- Statystyki niegładkie. Dla mediany i innych kwantyli jackknife daje niespójny błąd standardowy, bo usunięcie jednej obserwacji zmienia wynik skokowo. Tu lepszy jest bootstrap.
- Korekta zwiększa zmienność. Oszacowanie skorygowane ma zwykle większą wariancję. Gdy obciążenie jest małe w porównaniu z błędem standardowym, podaj wynik bez korekty.
- To nie walidacja krzyżowa. Schemat „bez jednej obserwacji” wygląda jak walidacja krzyżowa leave-one-out, ale tamta ocenia błąd predykcji, a jackknife – precyzję i obciążenie statystyki.
Podręcznikowe omówienie obu metod resamplingu dają Efron i Tibshirani (1993).
Jackknife w R
Kod liczy korelację bez kolejnych obserwacji, szacuje obciążenie i błąd standardowy metodą jackknife, porównuje go z bootstrapem i sprawdza korektę na wariancji.
Jackknife dla współczynnika korelacji
R
suppressPackageStartupMessages(library(boot))
set.seed(3860)
n <- 25
stres <- rnorm(n, 50, 10) # wynik skali stresu
sen <- 8 - 0.05 * stres + rnorm(n, 0, 0.6) # długość snu (h)
r <- cor(stres, sen)
r_i <- sapply(1:n, function(i) cor(stres[-i], sen[-i])) # n oszacowań bez i-tej osoby
obc <- (n - 1) * (mean(r_i) - r) # jackknife: obciążenie
se_jack <- sqrt((n - 1) / n * sum((r_i - mean(r_i))^2)) # jackknife: błąd standardowy
b <- boot(data.frame(stres, sen), function(d, i) cor(d$stres[i], d$sen[i]), R = 5000)
round(c(r = r, obciazenie = obc, r_skorygowane = r - obc,
se_jack = se_jack, se_boot = sd(b$t[, 1])), 4)
# kontrola: wariancja z dzielnikiem n po korekcie jackknife = var() z dzielnikiem n - 1
v_n <- function(x) mean((x - mean(x))^2)
v_i <- sapply(1:n, function(i) v_n(stres[-i]))
round(c(v_n = v_n(stres), jackknife = n * v_n(stres) - (n - 1) * mean(v_i), var = var(stres)), 3)Wynik w R
r obciazenie r_skorygowane se_jack se_boot
-0.5439 0.0037 -0.5476 0.1343 0.1279
v_n jackknife var
97.830 101.906 101.906Bibliografia oprogramowania
Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 (pakiet boot). W pracy podaj wersje faktycznie użytych pakietów (sessionInfo()).
- R: R Core Team. (2026). R: A language and environment for statistical computing (Version 4.5.3) [Computer software]. R Foundation for Statistical Computing. https://www.R-project.org/
- boot (wersja 1.3-32): Canty, A., & Ripley, B. (2025). boot: Bootstrap functions (R package version 1.3-32) [Computer software]. https://doi.org/10.32614/CRAN.package.boot
Najczęstsze pytania
Czym jackknife różni się od bootstrapu?
Jackknife tworzy dokładnie n podprób bez jednej obserwacji i daje ten sam wynik przy każdym uruchomieniu. Bootstrap losuje tysiące prób ze zwracaniem. Jackknife jest szybszy i deterministyczny, ale zawodzi dla statystyk niegładkich, takich jak mediana.
Czy jackknife to to samo co walidacja krzyżowa leave-one-out?
Schemat podprób jest ten sam, ale cel inny. Walidacja krzyżowa ocenia błąd predykcji na pominiętej obserwacji, a jackknife – obciążenie i błąd standardowy statystyki liczonej na pozostałych.
Jak policzyć jackknife w R?
Wystarczy pętla: t_i <- sapply(1:n, function(i) statystyka(dane[-i])), a potem obciążenie (n - 1) * (mean(t_i) - t0) i błąd standardowy sqrt((n - 1) / n * sum((t_i - mean(t_i))^2)).
Powiązane hasła
Potrzebujesz wsparcia w analizie danych?
Wybierz ofertę dopasowaną do pracy dyplomowej albo profesjonalnego projektu naukowego.
Wyceń analizęOferta dla studentówBibliografia i dalsza literatura naukowa (APA 7)
- Efron, B. (1979). Bootstrap methods: Another look at the jackknife. The Annals of Statistics, 7(1), 1–26. https://doi.org/10.1214/aos/1176344552 ● Otwarty dostęp
- Efron, B., & Tibshirani, R. J. (1993). An introduction to the bootstrap. Chapman & Hall.
- Miller, R. G. (1974). The jackknife—a review. Biometrika, 61(1), 1–15. https://doi.org/10.1093/biomet/61.1.1
Cytowania BibTeX
@article{efron1979bootstrap, author={Efron, Bradley}, title={{Bootstrap methods: Another look at the jackknife}}, journal={The Annals of Statistics}, year={1979}, volume={7}, number={1}, pages={1--26}, doi={10.1214/aos/1176344552}}@book{efron1993introduction, author={Efron, Bradley and Tibshirani, Robert J.}, title={{An introduction to the bootstrap}}, year={1993}, publisher={Chapman \& Hall}}@article{miller1974jackknife, author={Miller, Rupert G.}, title={{The jackknife—a review}}, journal={Biometrika}, year={1974}, volume={61}, number={1}, pages={1--15}, doi={10.1093/biomet/61.1.1}}