Curs d’Estadística amb R per a Metges - Capítol 3: Inferència Estadística

Author

P. Loma-Osorio

Published

October 10, 2026

Fonaments d’estadística inferencial

library(tidyverse)
library(car)

# Carrega directa des de l'arrel del projecte
titanic <- read_csv("titanic.csv")

L’estadística descriptiva permet resumir i caracteritzar la mostra de pacients que hem reclutat. Tanmateix, a la recerca biomèdica l’objectiu rarament és limitar-se a la mostra: volem saber si les diferències o associacions observades es poden generalitzar a la població diana (tots els pacients amb la mateixa patologia).

La inferència estadística és el conjunt de procediments matemàtics que permeten extreure conclusions sobre paràmetres poblacionals a partir de les dades d’una mostra finita, quantificant sempre el grau d’incertesa inherent a l’atzar del mostreig.


1. Distribucions de probabilitat biomèdiques

Una distribució de probabilitat és un model matemàtic que descriu la probabilitat teòrica que una variable aleatòria prengui determinats valors. Conèixer la distribució teòrica d’un fenomen clínic és el que ens permet calcular probabilitats d’esdeveniments, establir intervals de referència i construir contrastos d’hipòtesis.

Distribució Tipus de dada Paràmetres clau Exemple mèdic típic
Normal (Gauss) Contínua \(\mu\) (mitjana), \(\sigma\) (desviació) Tensió arterial, edat, alçada
\(t\) de Student Contínua \(df\) (graus de llibertat) Inferència de mitjanes amb mostres petites (\(n < 30\))
Chi-quadrat (\(\chi^2\)) Contínua \(df\) (graus de llibertat) Taules de contingència i bondat d’ajust
Binomial Discreta \(n\) (intents), \(p\) (probabilitat) Nombre de respostes favorables a un tractament
Poisson Discreta \(\lambda\) (taxa mitjana) Esdeveniments rars per unitat de temps o espai (incidència d’endocarditis)
Exponencial Contínua \(\lambda\) (taxa) Temps d’espera entre admissions a urgències

La família de funcions a R: r, d, p i q

R utilitza una nomenclatura regular i estandarditzada per treballar amb qualsevol distribució de probabilitat. El prefix de la funció en defineix l’acció:

  • r (random): Genera valors aleatoris simulats a partir de la distribució (p. ex., rnorm()).
  • d (density): Retorna l’alçada de la funció de densitat de probabilitat per a un valor concret (p. ex., dnorm()).
  • p (probability): Calcula la probabilitat acumulada fins a un cert valor \(P(X \le x)\) (p. ex., pnorm()).
  • q (quantile): Funció inversa; donada una probabilitat, retorna el valor del tall o quantil corresponent (p. ex., qnorm()).
# Visualització d'una distribució Normal estàndard N(0, 1)
x_vals <- seq(-4, 4, length.out = 500)
densitat <- dnorm(x_vals, mean = 0, sd = 1)

plot(x_vals, densitat, type = "l", lwd = 2, col = "#1565C0",
     main = "Distribució Normal estàndard N(0, 1)",
     xlab = "Valors de Z", ylab = "Densitat de probabilitat")
polygon(c(x_vals[x_vals >= 1.96], 1.96), 
        c(densitat[x_vals >= 1.96], 0), 
        col = rgb(0.8, 0.2, 0.2, 0.4), border = NA)
text(2.6, 0.05, "Cua crítica (2.5%)", col = "#C62828")


2. El Teorema Central del Límit (TCL)

El Teorema Central del Límit és el pilar fonamental que sosté la inferència estadística paramètrica:

Si s’extreuen mostres aleatòries de mida \(n\) d’una població qualsevol (fins i tot si la població d’origen és fortament asimètrica o no normal), la distribució de les mitjanes mostrals tendirà a seguir una distribució normal a mesura que \(n\) augmenta (habitualment per a \(n \ge 30\)).

Demostració mitjançant simulació clínica

Imaginem una població de pacients amb una distribució de biomarcadors (p. ex., troponina) extremadament asimètrica cap a la dreta (distribució exponencial). Si extraiem 1.000 mostres repetides de mida \(n = 50\) i en calculem la mitjana a cadascuna:

set.seed(123)

# 1. Població original molt asimètrica
poblacio_asimetrica <- rexp(100000, rate = 0.2)

# 2. Extracció de 1.000 mostres de mida n = 50 i càlcul de les seves mitjanes
mitjanes_mostrals <- replicate(1000, mean(sample(poblacio_asimetrica, size = 50)))

par(mfrow = c(1, 2))

hist(poblacio_asimetrica[poblacio_asimetrica < 20], 
     breaks = 30, col = "#FFCCBC", border = "white",
     main = "Població original (Asimètrica)", xlab = "Biomarcador")

hist(mitjanes_mostrals, 
     breaks = 25, col = "#C8E6C9", border = "white",
     main = "Mitjanes mostrals (n = 50)", xlab = "Mitjana de la mostra")
curve(dnorm(x, mean = mean(mitjanes_mostrals), sd = sd(mitjanes_mostrals)) * length(mitjanes_mostrals) * diff(hist(mitjanes_mostrals, plot = FALSE)$mids[1:2]), 
      col = "#2E7D32", lwd = 2, add = TRUE)

par(mfrow = c(1, 1))

Aquest resultat explica per què podem utilitzar mètodes com la prova \(t\) de Student o construir intervals de confiança per a la mitjana en mostres de mida suficient, fins i tot quan la variable biològica individual no és estrictament normal.


3. Estandardització: Els Z-scores

Un Z-score (o puntuació tipificada) indica quantes desviacions estàndard se separa un valor concret de la mitjana poblacional o mostral:

\[Z = \frac{X - \mu}{\sigma}\]

Aplicacions en medicina

  • Comparabilitat: Permet contrastar valors de dues variables que tenen unitats de mesura diferents (p. ex., comparar el nivell relatiu de colesterol amb el de pressió arterial).
  • Taules de creixement i densitometria: La densitometria òssia utilitza el T-score i el Z-score per diagnosticar osteopènia (\(Z < -1.0\)) o osteoporosi (\(Z < -2.5\)).
  • Identificació de valors atípics: Observacions amb \(\vert{}Z\vert{} > 3\) ocorren per atzar en menys del 0.3% dels casos sota una distribució gaussiana, per la qual cosa mereixen una auditoria clínica com a possibles anomalies o errors de transcripció.
# Càlcul de la probabilitat acumulada sota Z = 1.96
pnorm(1.96)
[1] 0.9750021

Un valor de \(Z = 1.96\) deixa un \(97.5\%\) de la distribució per sota, o el que és el mateix, un \(2.5\%\) a la cua superior. En una distribució bilateral, l’interval \([-1.96, +1.96]\) conté exactament el 95% central de la distribució normal estàndard.


4. Estimació puntual vs. Intervals de Confiança (IC 95%)

  • Estimació puntual: Un valor únic calculat a partir de la mostra (\(\bar{X}\) o \(\hat{p}\)) que serveix com a millor aproximació del valor desconegut de la població (\(\mu\) o \(p\)). Té l’inconvenient de no expressar la precisió ni la incertesa de la mesura.
  • Interval de confiança (IC): Un rang de valors plausibles al voltant de l’estimació puntual, construït a partir de l’error estàndard de la mesura (\(SE\)).
Què significa realment un Interval de Confiança del 95%?

Error clínic comú: “Hi ha un 95% de probabilitat que el vertader paràmetre poblacional estigui dins d’aquest interval concret.” (Fals des del paradigma freqüentista: el paràmetre poblacional \(\mu\) és una constant fixa desconeguda; o hi cau a dins o no).

Interpretació metodològica correcta: Si repetíssim l’experiment o mostreig 100 vegades sota les mateixes condicions i calculéssim l’IC del 95% per a cadascuna de les 100 mostres, 95 d’aquests 100 intervals calculats contindrien el valor real del paràmetre poblacional.

Formulació matemàtica

Quan la desviació estàndard poblacional (\(\sigma\)) és desconeguda —la situació real en la pràctica mèdica—, fem servir la desviació estàndard mostral (\(s\)) i la distribució \(t\) de Student amb \(n - 1\) graus de llibertat en comptes de la normal estàndard:

\[IC_{95\%} = \bar{X} \pm t_{0.025, \, df = n-1} \times \frac{s}{\sqrt{n}}\]

A R, podem calcular l’estimació puntual i el seu interval de confiança de forma directa mitjançant t.test():

# Simulem la tensió arterial sistòlica de 25 pacients
set.seed(42)
tas_mostra <- rnorm(25, mean = 135, sd = 12)

# Estimació puntual
mean(tas_mostra)
[1] 137.2504
# Interval de confiança del 95%
resultat_ic <- t.test(tas_mostra)
resultat_ic$conf.int
[1] 130.7795 143.7213
attr(,"conf.level")
[1] 0.95

L’amplada de l’interval de confiança és el reflex directe de la precisió: - Com més gran és la mostra (\(n\)), més petit és l’error estàndard (\(\frac{s}{\sqrt{n}}\)) i més estret i precís és l’interval. - Com més gran és la variabilitat clínica (\(s\)), més ample és l’interval.


5. Verificació de supòsits: La porta d’entrada als tests d’hipòtesi

Abans d’aplicar qualsevol prova estadística clàssica per comparar grups (com la prova \(t\) de Student o l’ANOVA), cal verificar si les dades compleixen determinades premisses matemàtiques: 1. Normalitat: La variable contínua segueix una distribució aproximadament gaussiana en la població o en els residus del model? 2. Homocedasticitat (igualtat de variàncies): La dispersió de les dades és similar entre els grups que volem comparar?

Si aquests supòsits es violen, l’ús de proves paramètriques convencionals pot donar lloc a \(p\)-valors enganyosos (augments de l’error de tipus I o pèrdua de potència), i ens obligarà a triar alternatives no paramètriques o correccions específiques (com la prova de Welch).


6. Verificació de la normalitat

A la literatura biomèdica hi ha una tendència excessiva a confiar exclusivament en un \(p\)-valor formal per decidir la normalitat. Tanmateix, l’avaluació de la normalitat ha de ser primordialment visual i clínica, recolzada per contrastos numèrics només com a complement.

Proves formals: El test de Shapiro-Wilk

La prova de referència en mostres biològiques és el test de Shapiro-Wilk (shapiro.test()). Planteja les següents hipòtesis: - Hipòtesi nul·la (\(H_0\)): La mostra prové d’una població amb distribució normal. - Hipòtesi alternativa (\(H_1\)): La distribució no és normal.

# Exemple amb una mostra de tensió arterial simulada
set.seed(123)
tas_pacients <- rnorm(40, mean = 130, sd = 15)

shapiro.test(tas_pacients)

    Shapiro-Wilk normality test

data:  tas_pacients
W = 0.98859, p-value = 0.953
  • Si \(p \ge 0.05\): No podem rebutjar la hipòtesi nul·la; podem assumir raonablement la normalitat.
  • Si \(p < 0.05\): Rebutgem \(H_0\); la distribució s’allunya de la normalitat teòrica.
La trampa del test de Shapiro-Wilk segons la mida mostral (\(n\))
  • En mostres molt grans (\(n > 100\) o \(200\)): El test té massa potència estadística. Qualsevol desviació minúscula o irrellevant clínicament donarà un \(p < 0.05\), descartant injustificadament mètodes paramètrics quan el Teorema Central del Límit ja protegeix la inferència.
  • En mostres petites (\(n < 20\)): El test té molt poca potència. Una distribució marcadament asimètrica pot obtenir un \(p > 0.05\) simplement per falta de dades.

Diagnòstic visual: El gràfic Q-Q (Quantile-Quantile plot)

El gràfic Q-Q plot enfronta els quantils empírics de la nostra mostra contra els quantils teòrics d’una distribució normal estàndard. - Si les dades són normals, els punts s’alinearan de forma estreta al llarg de la recta diagonal de 45 graus. - Les desviacions als extrems (cues) indiquen cues pesades, asimetria o presència de valors atípics.

par(mfrow = c(1, 2))

# 1. Distribució Normal
qqnorm(tas_pacients, main = "Q-Q Plot: Distribució Normal", pch = 19, col = "#1E88E5")
qqline(tas_pacients, col = "#D32F2F", lwd = 2)

# 2. Distribució Asimètrica (Troponina o biomarcador asimètric)
biomarcador_asimetric <- rexp(40, rate = 0.1)
qqnorm(biomarcador_asimetric, main = "Q-Q Plot: Distribució Asimètrica", pch = 19, col = "#FB8C00")
qqline(biomarcador_asimetric, col = "#D32F2F", lwd = 2)

par(mfrow = c(1, 1))
Regla d’or a la recerca clínica

Utilitza sempre la combinació d’un histograma de densitat, un Q-Q plot i la relació entre la mitjana i la mediana. Si la mitjana i la mediana són pràcticament idèntiques i el Q-Q plot s’ajusta a la recta (especialment a la zona central), la distribució es pot tractar com a paramètrica sense cap recel.


7. Verificació de la igualtat de variàncies (Homocedasticitat)

Quan comparem dos o més grups de pacients (per exemple, grup control vs. grup tractat), hem de comprovar si la dispersió de la variable és equivalent entre ells (\(\sigma_1^2 = \sigma_2^2\)).

  • Hipòtesi nul·la (\(H_0\)): Les variàncies dels grups són iguals (homocedasticitat).
  • Hipòtesi alternativa (\(H_1\)): Les variàncies són significativament diferents (heterocedasticitat).

Test de Bartlett vs. Test de Levene

Disposem de dues proves clàssiques: 1. Test de Bartlett (bartlett.test()): Molt eficient però extremadament sensible a la no-normalitat. Si les dades no són rigorosament gaussianes, pot donar falsos positius d’heterocedasticitat. 2. Test de Levene (car::leveneTest()): Molt més robust davant de desviacions de la normalitat, ja que avalua les desviacions respecte a la mediana i no la mitjana. És la prova d’elecció recomanada.

# Simulem dades de dos grups de tractament amb diferent dispersió
set.seed(42)
grup_a <- rnorm(30, mean = 120, sd = 10)
grup_b <- rnorm(30, mean = 125, sd = 25)

dades_estudi <- tibble(
  tractament = factor(rep(c("Control", "Fàrmac"), each = 30)),
  pressio = c(grup_a, grup_b)
)

# 1. Test de Bartlett (R base)
bartlett.test(pressio ~ tractament, data = dades_estudi)

    Bartlett test of homogeneity of variances

data:  pressio by tractament
Bartlett's K-squared = 14.293, df = 1, p-value = 0.0001565
# 2. Test de Levene (requereix el paquet car)
library(car)
leveneTest(pressio ~ tractament, data = dades_estudi)
Levene's Test for Homogeneity of Variance (center = median)
      Df F value   Pr(>F)   
group  1  7.7306 0.007309 **
      58                    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Què fer davant dels resultats de l’homocedasticitat?

  • Si \(p \ge 0.05\) (homocedasticitat mantinguda): Podem utilitzar la prova \(t\) de Student clàssica (var.equal = TRUE) o l’ANOVA convencional.
  • Si \(p < 0.05\) (heterocedasticitat present): No apliquis el test \(t\) tradicional de Student. Farem servir la prova \(t\) de Welch (t.test(..., var.equal = FALSE)), que ajusta els graus de llibertat automàticament i és el comportament per defecte a R.

8. Resum d’actuació clínica abans del contrast

Abans de llançar el test estadístic final, segueix aquest esquema sistemàtic:

Supòsit Mètode visual Test estadístic Què fer si es viola (\(p < 0.05\))?
Normalitat Histograma, Q-Q Plot Shapiro-Wilk (shapiro.test()) Transformació logarítmica o prova no paramètrica (Mann-Whitney / Kruskal-Wallis). Si \(n > 50\), el TCL pot justificar mètodes paramètrics.
Homocedasticitat Boxplot per grups Levene (leveneTest()) o Bartlett Utilitzar la prova \(t\) de Welch (var.equal = FALSE) o ANOVA de Welch (oneway.test()).

9. La lògica del contrast d’hipòtesis

En recerca biomèdica, un contrast d’hipòtesis avalua si les diferències observades entre mostres són compatibles amb l’atzar o si reflecteixen un efecte biològic real:

  • Hipòtesi nul·la (\(H_0\)): Postula l’absència d’efecte o de diferència (p. ex., “El nou fàrmac redueix la pressió arterial exactament igual que el placebo”).
  • Hipòtesi alternativa (\(H_1\)): Postula l’existència d’una diferència o associació real (p. ex., “Hi ha diferències significatives en la pressió arterial entre ambdós grups”).

Errors estadístics i el concepte de \(p\)-valor

  • Error de tipus I (\(\alpha\)): Rebutjar \(H_0\) quan en realitat és certa (fals positiu). Convencionalment es fixa en el \(5\%\) (\(\alpha = 0.05\)).
  • Error de tipus II (\(\beta\)): No rebutjar \(H_0\) quan en realitat és falsa (fals negatiu).
  • Potència estadística (\(1 - \beta\)): Probabilitat de detectar una diferència real quan realment existeix (habitualment \(\ge 80\%\)).
  • \(p\)-valor: Probabilitat d’obtenir uns resultats tan o més extrems que els observats assumint que la hipòtesi nul·la és certa. No és la probabilitat que \(H_0\) sigui certa, sinó una mesura de compatibilitat de les dades amb el model nul.

10. Arbre de decisió per a la tria del test estadístic

Tipus de pregunta clínica Condicions paramètriques (Normalitat / Variàncies) Test paramètric Alternativa no paramètrica
2 grups independents (p. ex., Homes vs. Dones) Normalitat assumida \(t\) de Student (var.equal = TRUE) o Welch (var.equal = FALSE) U de Mann-Whitney / Wilcoxon (wilcox.test())
2 mostres aparellades (p. ex., Abans vs. Després del tractament) Diferències normals \(t\) de Student aparellada (paired = TRUE) Test dels rangs amb signe de Wilcoxon (paired = TRUE)
\(> 2\) grups independents (p. ex., 3 dosis de fàrmac) Normalitat i variàncies homogènies ANOVA d’un factor (aov()) Test de Kruskal-Wallis (kruskal.test())
2 variables qualitatives (p. ex., Diabetis vs. Mortalitat) Freqüències esperades \(\ge 5\) a cada cel·la Chi-quadrat d’independència (chisq.test()) Test exacte de Fisher (fisher.test())
Correlació contínua (p. ex., Edat vs. Filtració glomerular) Relació lineal i normalitat bivariada Correlació de Pearson (cor.test(..., method = "pearson")) Correlació de Spearman (cor.test(..., method = "spearman"))

11. Comparació de dues mitjanes

A. Mostres independents

Avaluem si la pressió arterial mitjana difereix entre dos grups de tractament:

set.seed(123)
grup_control <- rnorm(25, mean = 142, sd = 10)
grup_tractat <- rnorm(25, mean = 133, sd = 11)

dades_comparacio <- tibble(
  pressio = c(grup_control, grup_tractat),
  grup = factor(rep(c("Control", "Tractat"), each = 25))
)

# 1. Supòsit de variàncies iguals (t de Student clàssic)
t.test(pressio ~ grup, data = dades_comparacio, var.equal = TRUE)

    Two Sample t-test

data:  pressio by grup
t = 2.7234, df = 48, p-value = 0.008984
alternative hypothesis: true difference in means between group Control and group Tractat is not equal to 0
95 percent confidence interval:
  1.974142 13.112229
sample estimates:
mean in group Control mean in group Tractat 
             141.6667              134.1235 
# 2. Supòsit de variàncies no homogènies (t de Welch - opció per defecte a R)
t.test(pressio ~ grup, data = dades_comparacio, var.equal = FALSE)

    Welch Two Sample t-test

data:  pressio by grup
t = 2.7234, df = 47.796, p-value = 0.008995
alternative hypothesis: true difference in means between group Control and group Tractat is not equal to 0
95 percent confidence interval:
  1.973527 13.112844
sample estimates:
mean in group Control mean in group Tractat 
             141.6667              134.1235 
# 3. Alternativa no paramètrica (si les dades no són normals)
wilcox.test(pressio ~ grup, data = dades_comparacio)

    Wilcoxon rank sum exact test

data:  pressio by grup
W = 443, p-value = 0.01077
alternative hypothesis: true location shift is not equal to 0

B. Mostres aparellades (abans i després)

Quan mesurem la mateixa variable en els mateixos pacients en dos moments temporals:

set.seed(42)
tas_pre <- rnorm(20, mean = 150, sd = 12)
tas_post <- tas_pre - rnorm(20, mean = 10, sd = 5) # Reducció mitjana de 10 mmHg

# Test t aparellat (paramètric)
t.test(tas_pre, tas_post, paired = TRUE)

    Paired t-test

data:  tas_pre and tas_post
t = 6.9683, df = 19, p-value = 1.222e-06
alternative hypothesis: true mean difference is not equal to 0
95 percent confidence interval:
  6.048371 11.241711
sample estimates:
mean difference 
       8.645041 
# Test de Wilcoxon aparellat (no paramètric)
wilcox.test(tas_pre, tas_post, paired = TRUE)

    Wilcoxon signed rank exact test

data:  tas_pre and tas_post
V = 206, p-value = 1.335e-05
alternative hypothesis: true location shift is not equal to 0

12. Comparació de més de dues mitjanes: ANOVA i Kruskal-Wallis

Quan comparem tres o més grups (p. ex., Placebo, Dosi baixa, Dosi alta), no s’han de fer múltiples proves \(t\) individuals dues a dues, ja que s’inflaria exponencialment la taxa global d’error de tipus I (\(\alpha\)).

ANOVA d’un factor (aov()) i anàlisi Post-Hoc

L’ANOVA contrasta la hipòtesi nul·la que totes les mitjanes dels grups són iguals:

# Exemple amb el conjunt de dades integrat iris
model_anova <- aov(Sepal.Length ~ Species, data = iris)
summary(model_anova)
             Df Sum Sq Mean Sq F value Pr(>F)    
Species       2  63.21  31.606   119.3 <2e-16 ***
Residuals   147  38.96   0.265                   
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Si l’ANOVA és estadísticament significatiu (\(p < 0.05\)), indica que com a mínim un grup difereix dels altres, però no diu quin. Per identificar quins grups difereixen exactament entre si, apliquem una correcció per comparacions múltiples amb el test de Tukey (HSD):

TukeyHSD(model_anova)
  Tukey multiple comparisons of means
    95% family-wise confidence level

Fit: aov(formula = Sepal.Length ~ Species, data = iris)

$Species
                      diff       lwr       upr p adj
versicolor-setosa    0.930 0.6862273 1.1737727     0
virginica-setosa     1.582 1.3382273 1.8257727     0
virginica-versicolor 0.652 0.4082273 0.8957727     0

Alternativa no paramètrica: Kruskal-Wallis

Si les dades violen greument el supòsit de normalitat:

kruskal.test(Sepal.Length ~ Species, data = iris)

    Kruskal-Wallis rank sum test

data:  Sepal.Length by Species
Kruskal-Wallis chi-squared = 96.937, df = 2, p-value < 2.2e-16

13. Comparació de variables qualitatives i taules de contingència

Test de Chi-quadrat (\(\chi^2\)) d’independència

Avalua si l’associació entre dues variables categòriques és estadísticament significativa:

# Taula de contingència entre supervivència i classe al Titanic
taula_titanic <- table(titanic$Survived, titanic$Pclass)
chisq.test(taula_titanic)

    Pearson's Chi-squared test

data:  taula_titanic
X-squared = 102.89, df = 2, p-value < 2.2e-16

Test exacte de Fisher

Quan alguna cel·la de la taula de freqüències té un valor esperat inferior a 5, l’aproximació asimptòtica de \(\chi^2\) deixa de ser fiable i cal utilitzar el test exacte de Fisher:

# Taula amb recomptes mostrals petits
taula_petita <- matrix(c(2, 8, 9, 3), nrow = 2)
fisher.test(taula_petita)

    Fisher's Exact Test for Count Data

data:  taula_petita
p-value = 0.02997
alternative hypothesis: true odds ratio is not equal to 1
95 percent confidence interval:
 0.006348134 0.840561974
sample estimates:
odds ratio 
 0.0961195 

Comparació de dues proporcions: prop.test()

Per comparar directament les taxes d’èxit de dos grups i obtenir l’interval de confiança del 95% de la diferència de proporcions:

# 35 èxits de 100 pacients en el grup A vs. 55 èxits de 100 en el grup B
prop.test(x = c(35, 55), n = c(100, 100))

    2-sample test for equality of proportions with continuity correction

data:  c(35, 55) out of c(100, 100)
X-squared = 7.2929, df = 1, p-value = 0.006923
alternative hypothesis: two.sided
95 percent confidence interval:
 -0.3450812 -0.0549188
sample estimates:
prop 1 prop 2 
  0.35   0.55 

14. Contrast de correlació lineal

Avaluem si la covariació lineal entre dues variables contínues és significativament diferent de zero:

# 1. Correlació de Pearson (paramètrica)
cor.test(iris$Sepal.Length, iris$Petal.Length, method = "pearson")

    Pearson's product-moment correlation

data:  iris$Sepal.Length and iris$Petal.Length
t = 21.646, df = 148, p-value < 2.2e-16
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 0.8270363 0.9055080
sample estimates:
      cor 
0.8717538 
# 2. Correlació de Spearman (no paramètrica, basada en rangs)
cor.test(iris$Sepal.Length, iris$Petal.Length, method = "spearman")

    Spearman's rank correlation rho

data:  iris$Sepal.Length and iris$Petal.Length
S = 66429, p-value < 2.2e-16
alternative hypothesis: true rho is not equal to 0
sample estimates:
      rho 
0.8818981 

15. Com reportar la inferència en publicacions biomèdiques

Un dels errors metodològics més denunciats a la literatura mèdica contemporània és la dependència exclusiva del llindar dicotòmic de \(p < 0.05\). Un \(p\)-valor petit per si sol no mesura la magnitud de l’efecte ni la seva rellevància clínica.

La trampa de la significació estadística vs. clínica

  • Significació estadística: Una mostra gegantina (\(n = 50.000\)) pot detectar una reducció de la pressió arterial de només \(0.5\text{ mmHg}\) amb un \(p < 0.001\). És estadísticament significatiu, però clínicament irrellevant.
  • Mida mostral reduïda: Un estudi pilot amb \(n = 15\) pacients pot mostrar una reducció espectacular de la mortalitat que obtingui un \(p = 0.08\) exclusivament per falta de potència estadística (error de tipus II).
El decàleg per redactar resultats a revistes mèdiques (Guies ICMJE / CONSORT)
  1. Evita la dicotomia simplista: No et limitis a escriure “diferència estadísticament significativa (\(p < 0.05\))”.
  2. Acompanya sempre el \(p\)-valor de l’estimació puntual i de l’IC 95%: Proporciona la diferència absoluta de mitjanes o de riscos juntament amb el seu interval de confiança. L’IC informa directament de la precisió i dels límits plausibles de l’efecte.
  3. P-valors exactes: Reporta el valor numèric exacte (p. ex., \(p = 0.034\), no \(p < 0.05\)), tret que sigui extremadament petit (\(p < 0.001\)).
  4. Mesures de grandària de l’efecte (Effect size): Quan comparis mitjanes, acompanya el test de la d de Cohen (effsize::cohen.d()), i en taules \(2 \times 2\) reporta sempre l’Odds Ratio (OR) o el Risc Relatiu (RR) amb els seus respectius IC 95%.

Model de redacció recomanat

“El tractament amb el nou antihipertensiu va reduir la pressió arterial sistòlica en una mitjana de \(12.4\text{ mmHg}\) (IC 95%: \(8.2\) a \(16.6\text{ mmHg}\)) en comparació amb el placebo (\(t(48) = 5.86\), \(p < 0.001\), \(d\text{ de Cohen} = 0.85\)).”


16. Exercicis pràctics del Capítol 3

Aplica les tècniques d’inferència estadística i contrast d’hipòtesis treballades:

  1. Simula amb rnorm() una mostra de \(30\) pacients amb colesterol LDL (mitjana \(130\), desviació típica \(20\)). Calcula manualment i amb t.test() el seu interval de confiança del 95%.
  2. Comprova formalment i gràficament si la variable Age del conjunt de dades del Titanic segueix una distribució normal.
  3. Utilitzant el dataset iris, avalua si la variància de la longitud del sèpal (Sepal.Length) és homogènia entre les espècies versicolor i virginica mitjançant el test de Levene.
  4. Contrasta si hi ha diferències significatives en la tarifa pagada (Fare) entre homes i dones al Titanic. Quin test cal utilitzar tenint en compte la distribució de la variable?
  5. Avaluem un assaig clínic on es mesura la freqüència cardíaca basal i post-fàrmac en \(20\) pacients. Utilitza una prova \(t\) aparellada i la seva alternativa no paramètrica per valorar l’efecte.
  6. A la base de dades del Titanic, comprova mitjançant el test de Chi-quadrat si la supervivència (Survived) està associada al port d’embarcament (Embarked).
  7. Contrasta si la taxa de resposta d’un nou fàrmac (\(42\) èxits de \(60\) pacients) és significativament superior a la de la teràpia estàndard (\(28\) èxits de \(60\) pacients) mitjançant prop.test().
  8. Avalua si existeix correlació significativa entre la longitud del sèpal i l’amplada del pètal a iris, reportant el coeficient de Pearson i el seu \(p\)-valor.

library(tidyverse)
library(car)

# Exercici 1: IC 95% del colesterol LDL
set.seed(123)
ldl <- rnorm(30, mean = 130, sd = 20)
t.test(ldl)$conf.int
[1] 121.7315 136.3844
attr(,"conf.level")
[1] 0.95
# Exercici 2: Normalitat de l'edat al Titanic
# Filtrem els valors absents per fer el test
edat_titanic <- na.omit(titanic$Age)
shapiro.test(edat_titanic[1:100]) # Mostra de 100 per no sobredimensionar el test

    Shapiro-Wilk normality test

data:  edat_titanic[1:100]
W = 0.95098, p-value = 0.0009628
qqnorm(edat_titanic, pch = 19, col = "#1565C0")
qqline(edat_titanic, col = "red", lwd = 2)

# Exercici 3: Homocedasticitat a iris (versicolor vs virginica)
iris_sub <- iris %>% filter(Species %in% c("versicolor", "virginica"))
leveneTest(Sepal.Length ~ Species, data = iris_sub)
Levene's Test for Homogeneity of Variance (center = median)
      Df F value Pr(>F)
group  1  1.0245 0.3139
      98               
# Exercici 4: Comparació de tarifa (Fare) per sexe
# Com que Fare té una forta asimetria positiva, utilitzem Mann-Whitney / Wilcoxon:
wilcox.test(Fare ~ Sex, data = titanic)

    Wilcoxon rank sum test with continuity correction

data:  Fare by Sex
W = 119003, p-value = 9.548e-15
alternative hypothesis: true location shift is not equal to 0
# Exercici 5: Freqüència cardíaca aparellada (abans vs després)
set.seed(42)
fc_basal <- rnorm(20, mean = 85, sd = 10)
fc_post <- fc_basal - rnorm(20, mean = 8, sd = 4)

t.test(fc_basal, fc_post, paired = TRUE)

    Paired t-test

data:  fc_basal and fc_post
t = 6.9683, df = 19, p-value = 1.222e-06
alternative hypothesis: true mean difference is not equal to 0
95 percent confidence interval:
 4.838697 8.993369
sample estimates:
mean difference 
       6.916033 
wilcox.test(fc_basal, fc_post, paired = TRUE)

    Wilcoxon signed rank exact test

data:  fc_basal and fc_post
V = 206, p-value = 1.335e-05
alternative hypothesis: true location shift is not equal to 0
# Exercici 6: Chi-quadrat supervivència vs port d'embarcament
taula_embarked <- table(titanic$Survived, titanic$Embarked)
chisq.test(taula_embarked)

    Pearson's Chi-squared test

data:  taula_embarked
X-squared = 26.489, df = 2, p-value = 1.77e-06
# Exercici 7: Comparació de dues proporcions
prop.test(x = c(42, 28), n = c(60, 60))

    2-sample test for equality of proportions with continuity correction

data:  c(42, 28) out of c(60, 60)
X-squared = 5.7943, df = 1, p-value = 0.01608
alternative hypothesis: two.sided
95 percent confidence interval:
 0.04526058 0.42140609
sample estimates:
   prop 1    prop 2 
0.7000000 0.4666667 
# Exercici 8: Correlació lineal
cor.test(iris$Sepal.Length, iris$Petal.Width, method = "pearson")

    Pearson's product-moment correlation

data:  iris$Sepal.Length and iris$Petal.Width
t = 17.296, df = 148, p-value < 2.2e-16
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 0.7568971 0.8648361
sample estimates:
      cor 
0.8179411