Creare la tabella del chi quadrato in Python
Questo codice utilizza la libreria scipy.stats per calcolare i valori critici del chi quadrato e li organizza in una tabella utilizzando pandas. I valori sono arrotondati a due cifre decimali per una visualizzazione più chiara.
import pandas as pd
import numpy as np
from scipy.stats import chi2
# Definire i gradi di libertà e i livelli di significatività
degrees_of_freedom_extended = np.arange(1, 41)
alpha_values_extended = [0.5, 0.25, 0.1, 0.05, 0.025, 0.01, 0.005, 0.001]
# Costruire la tabella con i nuovi parametri
chi_square_table_extended = pd.DataFrame({
f'α = {alpha}': [round(chi2.ppf(1 - alpha, df), 2) for df in degrees_of_freedom_extended]
for alpha in alpha_values_extended
}, index=degrees_of_freedom_extended)
chi_square_table_extended.index.name = 'Degrees of Freedom'
# Visualizzare la tabella
chi_square_table_extended
Ecco la spiegazione dettagliata del codice.
Per prima cosa importo le librerie necessarie al programma.
import pandas as pd
import numpy as np
from scipy.stats import chi2
Il codice utilizza tre moduli esterni:
- `pandas` viene utilizzato per creare e gestire la tabella in formato DataFrame.
- `numpy` serve per creare un array dei gradi di libertà.
- `scipy.stats.chi2` fornisce la distribuzione del chi quadrato e viene utilizzata per calcolare i valori critici.
Poi definisco i parametri della tabella: i gradi di libertà e i livelli di significatività.
degrees_of_freedom_extended = np.arange(1, 41)
alpha_values_extended = [0.5, 0.25, 0.1, 0.05, 0.025, 0.01, 0.005, 0.001]
Nella variabile `degrees_of_freedom_extended` creo un array che va da 1 a 40 usando la funzione np.arange(1, 41). Questi rappresentano i gradi di libertà per la tabella.
Nella variabile `alpha_values_extended` memorizzo una lista che contiene i livelli di significatività ( α ) che voglio considerare.
A questo punto costruisco la tabella:
chi_square_table_extended = pd.DataFrame({
f'α = {alpha}': [round(chi2.ppf(1 - alpha, df), 2) for df in degrees_of_freedom_extended]
for alpha in alpha_values_extended
}, index=degrees_of_freedom_extended)
Questa parte del codice crea un DataFrame utilizzando `pandas`.
La struttura della tabella è costruita con un dictionary comprehension, dove:
- Le chiavi del dizionario sono i nomi delle colonne, formattate come `α = {alpha}` per indicare il livello di significatività.
- I valori delle colonne sono generati tramite una lista che calcola i valori critici per ogni grado di libertà usando `chi2.ppf(1 - alpha, df)`.
- `chi2.ppf(1 - alpha, df)` calcola il valore critico del chi quadrato per un dato livello di significatività e grado di libertà.
- `round(..., 2)` arrotonda ogni valore a due cifre decimali.
- `index=degrees_of_freedom_extended` imposta l'indice del DataFrame come l'array dei gradi di libertà.
Assegno il nome `"Degrees of Freedom"` all'indice del DataFrame per indicare chiaramente che le righe rappresentano i gradi di libertà.
chi_square_table_extended.index.name = 'Degrees of Freedom'
Infine, visualizzo la tabella che ho appena creato
chi_square_table_extended
Questa riga mostra il DataFrame creato. In un ambiente interattivo (come un notebook Jupyter), questa istruzione visualizza la tabella del chi quadrato in formato tabellare.
Il codice crea una tabella dei valori critici del chi quadrato per diversi gradi di libertà (da 1 a 40) e livelli di significatività ( α ) specifici, arrotondando i valori a due cifre decimali per migliorare la leggibilità.
E così via.