Metodolog.pl · praktyczna baza wiedzy

Czym jest centralne twierdzenie graniczne?

Intuicja, warunki i interaktywna symulacja pokazująca, dlaczego rozkład średnich może zbliżać się do normalnego, choć surowe dane są skośne.

Strona główna / Blog / Czym jest centralne twierdzenie graniczne?
Nie chodzi o normalność danych: twierdzenie dotyczy rozkładu odpowiednio standaryzowanej sumy lub średniej z wielu niezależnych obserwacji.

Intuicja krok po kroku

  1. Losujemy n obserwacji z tej samej populacji.
  2. Obliczamy ich średnią.
  3. Powtarzamy losowanie bardzo wiele razy.
  4. Patrzymy na rozkład uzyskanych średnich.

Przy spełnieniu warunków rozkład średnich zbliża się do normalnego wraz ze wzrostem n. Jednocześnie jego odchylenie standardowe — błąd standardowy — maleje jak σ/√n.

Symulacja dla skośnego rozkładu wykładniczego

Co twierdzenie uzasadnia, a czego nie?

Zestawienie informacji omawianych w tej sekcji
Może pomócNie gwarantuje
przybliżać rozkład średniej i błędu standardowegonormalności surowych obserwacji
budować przybliżone przedziały i testy w dużych próbachodporności na zależności, ciężkie ogony i zły projekt
wyjaśnić wpływ n na precyzję średniejże „n = 30” zawsze wystarczy

Nie ma uniwersalnej granicy n

Tempo zbieżności zależy od skośności, ogonów i zależności w danych. Dla bardzo ciężkich ogonów lub obserwacji zależnych proste przybliżenie może być słabe nawet przy dużym N.

Definicje, zalecenia interpretacyjne i sposób raportowania oparto na literaturze metodologicznej wskazanej w bibliografii (Lakens, 2022).

Przykład reprodukowalny

Kod w R, Pythonie i IBM SPSS Statistics

Symulacja losuje obserwacje z rozkładu wykładniczego, aby pokazać zmianę rozkładu średniej wraz z liczebnością próby. Nie jest to test normalności danych ani uzasadnienie dla dowolnego modelu parametrycznego.

Symulacja centralnego twierdzenia granicznego

Dane wejściowe: Symulacja losuje średnie z silnie skośnego rozkładu wykładniczego. Zmieniaj n i liczbę replikacji.

Co odczytać: Porównaj rozkład pojedynczych obserwacji z rozkładem średnich. CTG nie gwarantuje normalności surowych danych ani poprawności każdego modelu.

R
set.seed(2026)
B <- 10000
n <- 30

srednie <- replicate(B, mean(rexp(n, rate = 1)))
hist(srednie, breaks = "FD", probability = TRUE,
     col = "#70CED0", border = "white",
     main = paste("Rozkład średnich, n =", n), xlab = "Średnia")
curve(dnorm(x, mean = 1, sd = 1/sqrt(n)), add = TRUE,
      col = "#E9A820", lwd = 2)
c(M = mean(srednie), SD = sd(srednie), teoria_SE = 1/sqrt(n))
Python
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm

rng = np.random.default_rng(2026)
B, n = 10000, 30
srednie = rng.exponential(scale=1, size=(B, n)).mean(axis=1)

plt.hist(srednie, bins="fd", density=True, color="#70CED0")
x = np.linspace(srednie.min(), srednie.max(), 300)
plt.plot(x, norm.pdf(x, loc=1, scale=1/np.sqrt(n)), color="#E9A820")
plt.show()
print({"M": srednie.mean(), "SD": srednie.std(ddof=1), "teoria_SE": 1/np.sqrt(n)})
IBM SPSS Statistics — Syntax
SET SEED=2026.
INPUT PROGRAM.
LOOP replika=1 TO 10000.
  COMPUTE suma=0.
  LOOP i=1 TO 30.
    COMPUTE suma=suma + RV.EXP(1).
  END LOOP.
  COMPUTE srednia=suma/30.
  END CASE.
END LOOP.
END FILE.
END INPUT PROGRAM.
EXECUTE.

FREQUENCIES VARIABLES=srednia
 /STATISTICS=MEAN STDDEV
 /HISTOGRAM NORMAL.

Bibliografia oprogramowania i wykorzystanych pakietów

W przykładach użyto: R, Python, IBM SPSS Statistics, NumPy, SciPy, Matplotlib. W pracy badawczej podaj również faktycznie użyte wersje, które można odczytać poleceniami sessionInfo() w R oraz pip freeze lub importlib.metadata.version() w Pythonie. Cytuj wyłącznie narzędzia rzeczywiście użyte w końcowej analizie.

  1. R: R Core Team. (2026). R: A language and environment for statistical computing [Computer software]. R Foundation for Statistical Computing. https://www.R-project.org/
  2. Python: Van Rossum, G., & Drake, F. L., Jr. (2009). Python 3 reference manual. CreateSpace.
  3. IBM SPSS Statistics: IBM Corp. (2025). IBM SPSS Statistics for Macintosh (Version 31.0) [Computer software]. IBM Corp.
  4. NumPy: Harris, C. R., Millman, K. J., van der Walt, S. J., Gommers, R., Virtanen, P., Cournapeau, D., Wieser, E., Taylor, J., Berg, S., Smith, N. J., Kern, R., Picus, M., Hoyer, S., van Kerkwijk, M. H., Brett, M., Haldane, A., del Río, J. F., Wiebe, M., Peterson, P., … Oliphant, T. E. (2020). Array programming with NumPy. Nature, 585, 357–362. https://doi.org/10.1038/s41586-020-2649-2
  5. SciPy: Virtanen, P., Gommers, R., Oliphant, T. E., Haberland, M., Reddy, T., Cournapeau, D., Burovski, E., Peterson, P., Weckesser, W., Bright, J., van der Walt, S. J., Brett, M., Wilson, J., Millman, K. J., Mayorov, N., Nelson, A. R. J., Jones, E., Kern, R., Larson, E., … SciPy 1.0 Contributors. (2020). SciPy 1.0: Fundamental algorithms for scientific computing in Python. Nature Methods, 17, 261–272. https://doi.org/10.1038/s41592-019-0686-2
  6. Matplotlib: Hunter, J. D. (2007). Matplotlib: A 2D graphics environment. Computing in Science & Engineering, 9(3), 90–95. https://doi.org/10.1109/MCSE.2007.55
BibTeX dla oprogramowania i pakietów
@manual{r-core-2026,
  author = {{R Core Team}},
  title = {R: A Language and Environment for Statistical Computing},
  organization = {R Foundation for Statistical Computing},
  address = {Vienna, Austria},
  year = {2026},
  url = {https://www.R-project.org/}
}
@book{vanrossum2009python,
  author = {Van Rossum, Guido and Drake, Fred L., Jr.},
  title = {Python 3 Reference Manual},
  publisher = {CreateSpace},
  year = {2009},
  isbn = {978-1-4414-1269-0}
}
@software{ibm2025spss,
  author = {{IBM Corp.}},
  title = {IBM SPSS Statistics for Macintosh},
  year = {2025},
  version = {31.0},
  publisher = {IBM Corp.}
}
@article{harris2020numpy,
  author = {Harris, Charles R. and Millman, K. Jarrod and van der Walt, Stéfan J. and Gommers, Ralf and Virtanen, Pauli and others},
  title = {Array Programming with NumPy},
  journal = {Nature},
  year = {2020},
  volume = {585},
  pages = {357--362},
  doi = {10.1038/s41586-020-2649-2}
}
@article{virtanen2020scipy,
  author = {Virtanen, Pauli and Gommers, Ralf and Oliphant, Travis E. and Haberland, Matt and Reddy, Tyler and others},
  title = {SciPy 1.0: Fundamental Algorithms for Scientific Computing in Python},
  journal = {Nature Methods},
  year = {2020},
  volume = {17},
  pages = {261--272},
  doi = {10.1038/s41592-019-0686-2}
}
@article{hunter2007matplotlib,
  author = {Hunter, John D.},
  title = {Matplotlib: A 2D Graphics Environment},
  journal = {Computing in Science and Engineering},
  year = {2007},
  volume = {9},
  number = {3},
  pages = {90--95},
  doi = {10.1109/MCSE.2007.55}
}

Potrzebujesz wsparcia w analizie danych?

Wybierz ofertę dopasowaną do pracy dyplomowej albo profesjonalnego projektu naukowego.

Oferta dla badaczyOferta dla studentów

Bibliografia i dalsza literatura naukowa (APA 7)

  1. Lakens, D. (2022). Sample size justification. Collabra: Psychology, 8(1), 33267. https://doi.org/10.1525/collabra.33267
  2. Maxwell, S. E., Kelley, K., & Rausch, J. R. (2008). Sample size planning for statistical power and accuracy in parameter estimation. Annual Review of Psychology, 59, 537–563. https://doi.org/10.1146/annurev.psych.59.103006.093735
  3. Appelbaum, M., Cooper, H., Kline, R. B., Mayo-Wilson, E., Nezu, A. M., & Rao, S. M. (2018). Journal article reporting standards for quantitative research in psychology: The APA Publications and Communications Board task force report. American Psychologist, 73(1), 3–25. https://doi.org/10.1037/amp0000191
  4. Lang, T. A., & Altman, D. G. (2015). Basic statistical reporting for articles published in biomedical journals: The SAMPL guidelines. International Journal of Nursing Studies, 52(1), 5–9. https://doi.org/10.1016/j.ijnurstu.2014.09.006
  5. Wilkinson, L., & Task Force on Statistical Inference. (1999). Statistical methods in psychology journals: Guidelines and explanations. American Psychologist, 54(8), 594–604. https://doi.org/10.1037/0003-066X.54.8.594
  6. Altman, D. G. (2015). Making research articles fit for purpose: Structured reporting of key methods and findings. Trials, 16, 53. https://doi.org/10.1186/s13063-015-0575-7

Cytowania BibTeX

@article{lakens2022sample, author={Lakens, Daniël}, title={Sample size justification}, journal={Collabra: Psychology}, year={2022}, volume={8}, number={1}, pages={33267}, doi={10.1525/collabra.33267}}
@article{maxwell2008samplesize, author={Maxwell, Scott E. and Kelley, Ken and Rausch, Joseph R.}, title={Sample size planning for statistical power and accuracy in parameter estimation}, journal={Annual Review of Psychology}, year={2008}, volume={59}, pages={537--563}, doi={10.1146/annurev.psych.59.103006.093735}}
@article{appelbaum2018jars, author={Appelbaum, Mark and Cooper, Harris and Kline, Rex B. and Mayo-Wilson, Evan and Nezu, Arthur M. and Rao, Stephen M.}, title={Journal article reporting standards for quantitative research in psychology}, journal={American Psychologist}, year={2018}, volume={73}, number={1}, pages={3--25}, doi={10.1037/amp0000191}}
@article{lang2015sampl, author={Lang, Thomas A. and Altman, Douglas G.}, title={Basic statistical reporting for articles published in biomedical journals: the SAMPL guidelines}, journal={International Journal of Nursing Studies}, year={2015}, volume={52}, number={1}, pages={5--9}, doi={10.1016/j.ijnurstu.2014.09.006}}
@article{wilkinson1999statistical, author={Wilkinson, Leland and {Task Force on Statistical Inference}}, title={Statistical methods in psychology journals: Guidelines and explanations}, journal={American Psychologist}, year={1999}, volume={54}, number={8}, pages={594--604}, doi={10.1037/0003-066X.54.8.594}}
@article{altman2015reporting, author={Altman, Douglas G.}, title={Making research articles fit for purpose: structured reporting of key methods and findings}, journal={Trials}, year={2015}, volume={16}, pages={53}, doi={10.1186/s13063-015-0575-7}}
R