Calcolo Di Tabella Per Frequenze Teoriche In R

Calcolatore di Tabella per Frequenze Teoriche in R

Guida Completa al Calcolo di Tabelle per Frequenze Teoriche in R

Il calcolo delle frequenze teoriche è un passaggio fondamentale nell’analisi statistica, particolarmente importante nei test di bontà dell’adattamento (goodness-of-fit) e nei test di indipendenza. In R, questo processo può essere automatizzato con funzioni specifiche che confrontano le frequenze osservate con quelle attese secondo un determinato modello teorico.

1. Concetti Fondamentali

1.1 Frequenze Osservate vs. Frequenze Teoriche

  • Frequenze Osservate: I dati effettivamente raccolti durante un esperimento o uno studio.
  • Frequenze Teoriche: I valori attesi secondo un modello teorico (es. rapporto mendeliano 3:1, distribuzione uniforme, ecc.).

1.2 Importanza del Test Chi-Quadrato

Il test chi-quadrato (χ²) è lo strumento più comune per valutare se le differenze tra frequenze osservate e teoriche sono statisticamente significative. La formula è:

χ² = Σ [(Oᵢ – Eᵢ)² / Eᵢ]

dove Oᵢ = frequenza osservata, Eᵢ = frequenza teorica.

2. Implementazione in R

2.1 Creazione della Tabella delle Frequenze

In R, possiamo creare una tabella di contingenza usando la funzione table() o inserendo manualmente i dati in un vettore. Ad esempio:

observed <- c(15, 20, 10, 25, 30)
names(observed) <- c("A", "B", "C", "D", "E")
            

2.2 Calcolo delle Frequenze Teoriche

Le frequenze teoriche possono essere calcolate in base a:

  1. Rapporti noti (es. 3:1 in genetica mendeliana)
  2. Distribuzione uniforme (tutte le categorie hanno la stessa probabilità)
  3. Modelli probabilistici (es. distribuzione di Poisson)

Esempio per un rapporto 3:1:

total <- sum(observed)
expected <- c(3, 1) * total / sum(c(3, 1))
            

3. Esecuzione del Test Chi-Quadrato

La funzione chisq.test() in R esegue automaticamente il test e restituisce:

  • Statistica chi-quadrato
  • Gradi di libertà
  • p-value
Esempio di Output di chisq.test() in R
Parametro Valore Descrizione
Statistica χ² 4.25 Misura la discrepanza tra osservato e atteso
Gradi di libertà 2 Num categories – 1 (per goodness-of-fit)
p-value 0.1196 Probabilità di osservare i dati se l’ipotesi nulla è vera

3.1 Interpretazione dei Risultati

Regola generale:

  • Se p-value < α (livello di significatività, tipicamente 0.05): rifiutiamo l’ipotesi nulla (le differenze sono significative).
  • Se p-value ≥ α: non rifiutiamo l’ipotesi nulla (nessuna evidenza significativa contro il modello teorico).

4. Casi Pratici in Ricerca

4.1 Genetica: Test di Mendel

Supponiamo di incrociare due piante di pisello eterozigoti (Aa) e osservare 315 piselli lisci e 101 rugosi. Il rapporto atteso è 3:1 (dominante:recessivo).

Dati Sperimentali vs. Teorici (Rapporto 3:1)
Fenotipo Osservato (O) Atteso (E) (O-E)²/E
Liscio (dominante) 315 312.75 0.018
Rugoso (recessivo) 101 104.25 0.102
Totale χ² 0.120

In R:

observed <- c(315, 101)
expected_ratio <- c(3, 1)
chisq.test(observed, p = expected_ratio/sum(expected_ratio))
            

4.2 Marketing: Preferenze dei Consumatori

Un’azienda test 3 nuovi packaging (A, B, C) su 300 consumatori. L’ipotesi nulla è che non ci sia preferenza (distribuzione uniforme).

Preferenze per Packaging (n=300)
Packaging Osservato Atteso (uniforme)
A 120 100
B 95 100
C 85 100

Codice R:

observed <- c(120, 95, 85)
chisq.test(observed)
            

5. Errori Comuni e Soluzioni

5.1 Frequenze Attese Troppe Basse

Regola empirica: tutte le frequenze attese dovrebbero essere ≥ 5. Se non lo sono:

  • Unire categorie adiacenti
  • Usare il Test Esatto di Fisher per campioni piccoli:
matrix_data <- matrix(c(10, 20, 30, 40), nrow=2)
fisher.test(matrix_data)
            

5.2 Scelta del Test Sbagliata

Quando Usare Quale Test
Scenario Test Consigliato Funzione R
1 variabile categoriale, confrontare con distribuzione teorica Chi-quadrato goodness-of-fit chisq.test()
2 variabili categoriali (tabella di contingenza) Chi-quadrato di indipendenza chisq.test()
Campioni molto piccoli (E < 5) Test Esatto di Fisher fisher.test()
Dati con frequenze molto basse o asimmetria Test G (likelihood ratio) GTest() (package DescTools)

6. Visualizzazione dei Risultati

La libreria ggplot2 è ideale per visualizzare frequenze osservate vs. attese:

library(ggplot2)

data <- data.frame(
  Category = c("A", "B", "C", "D"),
  Observed = c(15, 20, 10, 25),
  Expected = c(12.5, 12.5, 12.5, 12.5)
)

ggplot(data, aes(x = Category)) +
  geom_bar(aes(y = Observed), stat = "identity", fill = "#2563eb", width = 0.7) +
  geom_point(aes(y = Expected), color = "#ef4444", size = 3) +
  geom_line(aes(y = Expected, group = 1), color = "#ef4444") +
  labs(title = "Frequenze Osservate vs. Attese",
       y = "Frequenza",
       x = "Categoria") +
  theme_minimal()
            

7. Alternative al Test Chi-Quadrato

7.1 Test G (Likelihood Ratio)

Meno sensibile a campioni piccoli rispetto al χ². Implementazione:

install.packages("DescTools")
library(DescTools)

observed <- c(15, 20, 10, 25)
expected <- rep(mean(observed), 4)
GTest(observed, expected)
            

7.2 Test di Kolmogorov-Smirnov

Per confrontare distribuzioni continue con una distribuzione teorica:

ks.test(rnorm(100), "pnorm", mean = 0, sd = 1)
            

8. Best Practices in R

  • Pulizia dei dati: Usare na.omit() per escludere valori mancanti.
  • Riproducibilità: Impostare set.seed() per analisi casuali.
  • Documentazione: Commentare il codice con # per spiegare i passaggi.
  • Pacchetti utili:
    • dplyr: manipolazione dati
    • janitor: pulizia nomi colonne
    • rstatix: test statistici avanzati

Leave a Reply

Your email address will not be published. Required fields are marked *