Metodolog.pl · praktyczna baza wiedzy

Po co statystyka jest potrzebna lekarzowi?

Od trafności testu diagnostycznego po bezwzględną korzyść z leczenia — statystyka jest językiem ryzyka i niepewności decyzji klinicznych.

Strona główna / Blog / Po co statystyka jest potrzebna lekarzowi?
Najkrótsza odpowiedź: W medycynie ta sama wartość względna może oznaczać zupełnie inną korzyść dla pacjenta przy innym ryzyku wyjściowym. Statystyka pomaga przejść od wyniku badania do ryzyka bezwzględnego, trafności diagnozy i niepewności decyzji klinicznej.

Trzy sytuacje, w których statystyka zmienia decyzję

Zestawienie informacji omawianych w tej sekcji
SytuacjaPytanie statystyczne
DiagnozaCzułość i swoistość nie wystarczą bez częstości choroby i wartości predykcyjnych.
LeczenieRyzyko względne warto uzupełnić różnicą ryzyka i NNT.
RokowanieModel wymaga kalibracji, dyskryminacji i walidacji.

Jak przełożyć statystykę na decyzję?

Lekarz używa statystyki do aktualizowania prawdopodobieństwa i porównywania możliwych decyzji. Wynik testu diagnostycznego zależy od czułości, swoistości oraz częstości choroby w populacji, dlatego dodatni wynik ma inne znaczenie w poradni wysokiego ryzyka niż w badaniu przesiewowym. Przy leczeniu trzeba zestawić oczekiwaną korzyść z działaniami niepożądanymi. Pomagają ryzyko bezwzględne, NNT i NNH z przedziałami ufności. W modelu rokowniczym ważne są nie tylko ranking pacjentów, lecz także zgodność przewidywanego ryzyka z częstością zdarzeń.

Przykład praktycznego wniosku

W badaniu częstość powikłania wyniosła 10% w kontroli i 6% po leczeniu. Ryzyko względne równe .60 opisuje redukcję względną o 40%, ale różnica bezwzględna wynosi 4 punkty procentowe. Odpowiada to NNT równemu 25 przy założeniu podobnego ryzyka wyjściowego i czasu obserwacji. Do decyzji potrzebny jest jeszcze przedział ufności dla różnicy ryzyka oraz częstość szkód. Raportowanie tylko „redukcji o 40%” wyolbrzymiałoby korzyść dla pacjenta, bo pomijałoby poziom ryzyka, od którego rozpoczęto porównanie.

Pięć umiejętności potrzebnych w tej dziedzinie

  1. odczytywanie ryzyka bezwzględnego obok ryzyka względnego;
  2. łączenie czułości i swoistości z prawdopodobieństwem przed testem;
  3. interpretowanie NNT i NNH z przedziałami ufności;
  4. ocena kalibracji, dyskryminacji i walidacji modeli rokowniczych;
  5. rozpoznawanie klinicznego znaczenia efektu poza progiem p;

Wzór praktycznej interpretacji

Ryzyko zdarzenia wyniosło [ ] w grupie leczenia i [ ] w grupie kontrolnej. RR = [ ], różnica ryzyka = [ ] punktów procentowych, a NNT = [ ]; 95% CI dla różnicy wyniósł [ ]. Wynik odniesiono do ryzyka wyjściowego badanej populacji.

Najczęstsza pułapka

Duży efekt względny może odpowiadać małej korzyści bezwzględnej, jeżeli zdarzenie jest rzadkie. Z kolei dobra wartość AUC nie gwarantuje poprawnej kalibracji. Decyzja kliniczna wymaga zestawienia korzyści, szkód, ryzyka wyjściowego i precyzji estymat.

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

Przykład reprodukowalny

Kod w R, Pythonie i IBM SPSS Statistics

Przed analizą zdefiniuj punkt końcowy, czas obserwacji, sposób kodowania zdarzeń i populację analityczną. Ten przykład nie zastępuje planu dla danych cenzurowanych, konkurujących ryzyk ani wielokrotnych punktów końcowych.

Regresja logistyczna, ilorazy szans i prawdopodobieństwa

Dane wejściowe: zdarzenie jest zakodowane 0/1; x1 i x2 to predyktory. Kategorię zdarzenia i odniesienia opisz jawnie.

Co odczytać: Raportuj B, OR=exp(B), 95% CI dla OR, p, prawdopodobieństwa, kalibrację i dyskryminację.

R
dane <- read.csv("dane.csv")
m <- glm(zdarzenie ~ x1 + x2, data = dane, family = binomial())
summary(m)

OR <- exp(coef(m))
CI <- exp(confint.default(m))
cbind(OR = OR, CI_dol = CI[, 1], CI_gora = CI[, 2])

dane$p_hat <- predict(m, type = "response")
head(dane[c("zdarzenie", "p_hat")])
Python
import pandas as pd
import numpy as np
import statsmodels.api as sm

df = pd.read_csv("dane.csv")[["zdarzenie", "x1", "x2"]].dropna()
X = sm.add_constant(df[["x1", "x2"]])
m = sm.Logit(df["zdarzenie"], X).fit()
print(m.summary())

wyniki = pd.DataFrame({
    "OR": np.exp(m.params),
    "CI_dol": np.exp(m.conf_int()[0]),
    "CI_gora": np.exp(m.conf_int()[1]),
    "p": m.pvalues
})
print(wyniki)
df["p_hat"] = m.predict(X)
IBM SPSS Statistics — Syntax
LOGISTIC REGRESSION VARIABLES zdarzenie
 /METHOD=ENTER x1 x2
 /CONTRAST (x2)=INDICATOR
 /PRINT=CI(95) GOODFIT
 /SAVE=PRED COOK LEVER
 /CLASSPLOT.

Krzywa ROC i AUC

Dane wejściowe: stan — prawdziwa klasa 0/1; marker — wynik testu lub przewidywane prawdopodobieństwo.

Co odczytać: Raportuj AUC z 95% CI, kierunek wyniku i próg wybrany według jawnego kosztu błędów, nie tylko maksimum Youdena.

R
dane <- read.csv("dane.csv")

# Pakiet pROC.
library(pROC)
roc_obj <- roc(response = dane$stan, predictor = dane$marker,
               levels = c(0, 1), direction = "<", ci = TRUE)
roc_obj
ci.auc(roc_obj)
coords(roc_obj, "best", best.method = "youden",
       ret = c("threshold", "sensitivity", "specificity"))
plot(roc_obj, print.auc = TRUE)
Python
import pandas as pd
from sklearn.metrics import roc_curve, roc_auc_score
import matplotlib.pyplot as plt

df = pd.read_csv("dane.csv")[["stan", "marker"]].dropna()
auc = roc_auc_score(df["stan"], df["marker"])
fpr, tpr, progi = roc_curve(df["stan"], df["marker"])
youden = tpr - fpr
i = youden.argmax()
print({"AUC": auc, "prog_Youdena": progi[i],
       "czulosc": tpr[i], "swoistosc": 1-fpr[i]})

plt.plot(fpr, tpr); plt.plot([0, 1], [0, 1], "--")
plt.xlabel("1 - swoistość"); plt.ylabel("Czułość"); plt.show()
IBM SPSS Statistics — Syntax
ROC marker BY stan (1)
 /PLOT=CURVE(REFERENCE)
 /PRINT=SE COORDINATES
 /CRITERIA=CUTOFF(INCLUDE) TESTPOS(LARGE) DISTRIBUTION(FREE) CI(95).

Bibliografia oprogramowania i wykorzystanych pakietów

W przykładach użyto: R, Python, IBM SPSS Statistics, pandas, NumPy, statsmodels, pROC, Matplotlib, scikit-learn. 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. pandas: McKinney, W. (2010). Data structures for statistical computing in Python. In S. van der Walt & J. Millman (Eds.), Proceedings of the 9th Python in Science Conference (pp. 56–61). https://doi.org/10.25080/Majora-92bf1922-00a
  5. 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
  6. statsmodels: Seabold, S., & Perktold, J. (2010). Statsmodels: Econometric and statistical modeling with Python. In S. van der Walt & J. Millman (Eds.), Proceedings of the 9th Python in Science Conference (pp. 92–96). https://doi.org/10.25080/Majora-92bf1922-011
  7. pROC: Robin, X., Turck, N., Hainard, A., Tiberti, N., Lisacek, F., Sanchez, J.-C., & Müller, M. (2011). pROC: An open-source package for R and S+ to analyze and compare ROC curves. BMC Bioinformatics, 12, 77. https://doi.org/10.1186/1471-2105-12-77
  8. 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
  9. scikit-learn: Pedregosa, F., Varoquaux, G., Gramfort, A., Michel, V., Thirion, B., Grisel, O., Blondel, M., Prettenhofer, P., Weiss, R., Dubourg, V., VanderPlas, J., Passos, A., Cournapeau, D., Brucher, M., Perrot, M., & Duchesnay, É. (2011). Scikit-learn: Machine learning in Python. Journal of Machine Learning Research, 12, 2825–2830.
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.}
}
@inproceedings{mckinney2010pandas,
  author = {McKinney, Wes},
  title = {Data Structures for Statistical Computing in Python},
  booktitle = {Proceedings of the 9th Python in Science Conference},
  editor = {van der Walt, Stéfan and Millman, Jarrod},
  year = {2010},
  pages = {56--61},
  doi = {10.25080/Majora-92bf1922-00a}
}
@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}
}
@inproceedings{seabold2010statsmodels,
  author = {Seabold, Skipper and Perktold, Josef},
  title = {Statsmodels: Econometric and Statistical Modeling with Python},
  booktitle = {Proceedings of the 9th Python in Science Conference},
  year = {2010},
  pages = {92--96},
  doi = {10.25080/Majora-92bf1922-011}
}
@article{robin2011proc,
  author = {Robin, Xavier and Turck, Natacha and Hainard, Alexandre and Tiberti, Natalia and Lisacek, Frédérique and Sanchez, Jean-Charles and Müller, Markus},
  title = {pROC: An Open-Source Package for R and S+ to Analyze and Compare ROC Curves},
  journal = {BMC Bioinformatics},
  year = {2011},
  volume = {12},
  pages = {77},
  doi = {10.1186/1471-2105-12-77}
}
@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}
}
@article{pedregosa2011scikitlearn,
  author = {Pedregosa, Fabian and Varoquaux, Gaël and Gramfort, Alexandre and Michel, Vincent and Thirion, Bertrand and Grisel, Olivier and others},
  title = {Scikit-learn: Machine Learning in Python},
  journal = {Journal of Machine Learning Research},
  year = {2011},
  volume = {12},
  pages = {2825--2830}
}

Planujesz artykuł lub projekt naukowy?

Możemy przygotować plan analityczny, reprodukowalny kod, modele, raport publication-ready i odpowiedź na uwagi recenzentów.

Analizy statystyczne dla badaczyOmów projekt

Bibliografia i dalsza literatura naukowa (APA 7)

  1. Altman, D. G. (1994). The scandal of poor medical research. BMJ, 308(6924), 283–284. https://doi.org/10.1136/bmj.308.6924.283
  2. 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
  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. Greenland, S., Senn, S. J., Rothman, K. J., Carlin, J. B., Poole, C., Goodman, S. N., & Altman, D. G. (2016). Statistical tests, P values, confidence intervals, and power: A guide to misinterpretations. European Journal of Epidemiology, 31(4), 337–350. https://doi.org/10.1007/s10654-016-0149-3
  5. Wasserstein, R. L., & Lazar, N. A. (2016). The ASA statement on p-values: Context, process, and purpose. The American Statistician, 70(2), 129–133. https://doi.org/10.1080/00031305.2016.1154108
  6. 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

Cytowania BibTeX

@article{altman1994medical, author={Altman, Douglas G.}, title={The scandal of poor medical research}, journal={BMJ}, year={1994}, volume={308}, number={6924}, pages={283--284}, doi={10.1136/bmj.308.6924.283}}
@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{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{greenland2016misinterpretations, author={Greenland, Sander and Senn, Stephen J. and Rothman, Kenneth J. and Carlin, John B. and Poole, Charles and Goodman, Steven N. and Altman, Douglas G.}, title={Statistical tests, P values, confidence intervals, and power: a guide to misinterpretations}, journal={European Journal of Epidemiology}, year={2016}, volume={31}, number={4}, pages={337--350}, doi={10.1007/s10654-016-0149-3}}
@article{wasserstein2016pvalues, author={Wasserstein, Ronald L. and Lazar, Nicole A.}, title={The ASA Statement on p-Values: Context, Process, and Purpose}, journal={The American Statistician}, year={2016}, volume={70}, number={2}, pages={129--133}, doi={10.1080/00031305.2016.1154108}}
@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}}
R