Calcolatore del V di Cramer per tabelle di contingenza
Il V di Cramer riassume l’intensità dell’associazione fra due variabili categoriali su una scala da zero a uno.
Esegui gratis nel browser
Inserisca le frequenze osservate come matrice di contingenza: il calcolatore ricava il chi-quadrato di Pearson e lo normalizza in base alle dimensioni effettive e al totale della tabella. È utile quando un test chi-quadrato segnala una relazione, ma Lei desidera anche una misura confrontabile della dimensione dell’effetto. La risposta include la statistica intermedia e le dimensioni, così il calcolo rimane verificabile.
Prepari correttamente la tabella di contingenza
Disponga le frequenze osservate in una matrice rettangolare. Ogni riga deve rappresentare una categoria della prima variabile e ogni colonna una categoria della seconda. Una cella contiene il numero, o la frequenza ponderata non negativa, delle osservazioni appartenenti a quella combinazione. Non invii percentuali normalizzate separatamente per riga, a meno che siano realmente pesi confrontabili, perché il V di Cramer dipende dai totali marginali oltre che dalla distribuzione interna. Tutte le righe devono avere lo stesso numero di celle e la matrice deve comprendere almeno due righe e due colonne. I valori devono essere finiti e non negativi. Sono ammessi valori frazionari per le tabelle ponderate, anche se i dati ordinari usano di solito conteggi interi. Le categorie completamente vuote non creano problemi: una riga o colonna tutta a zero viene esclusa dalle dimensioni effettive perché non fornisce informazioni e produrrebbe una frequenza attesa nulla. Il totale generale, però, non può essere zero e devono rimanere almeno due righe e due colonne non vuote.
Comprenda come viene eseguito il calcolo
Il calcolatore somma prima ogni riga e colonna e determina il totale generale. Per ogni cella attiva, la frequenza attesa nell’ipotesi di indipendenza è il totale di riga moltiplicato per il totale di colonna e diviso per il totale generale. La statistica chi-quadrato di Pearson somma il quadrato della differenza tra frequenza osservata e attesa, diviso per la frequenza attesa. Il V di Cramer normalizza poi il chi-quadrato usando il totale generale e la minore dimensione: la radice quadrata del chi-quadrato diviso per il totale moltiplicato per min(righe meno uno, colonne meno uno). La normalizzazione facilita il confronto tra tabelle di dimensioni diverse. L’output contiene `cramers_v`, `chi_square`, `total`, `rows` e `columns`. Righe e colonne indicano le dimensioni non vuote effettivamente usate. Un valore vicino a zero segnala uno scostamento minimo dall’indipendenza, mentre un valore vicino a uno indica una forte associazione categoriale. Il significato pratico dipende comunque dall’ambito, dal disegno campionario e dalla struttura delle categorie.
Interpreti il risultato senza sovrastimarlo
Consideri il V di Cramer una sintesi della dimensione dell’effetto, non una prova di causalità né un sostituto del test di significatività. Un campione grande può produrre un chi-quadrato significativo per un’associazione debole, mentre un campione piccolo può lasciare incerto un andamento apparentemente importante. Esamini conteggi, frequenze attese, metodo di campionamento e contesto insieme a V. Espressioni come debole, moderata o forte sono convenzioni approssimative; le soglie utili cambiano con il numero di categorie e le conseguenze della decisione. Le tabelle sparse richiedono particolare cautela, perché l’approssimazione chi-quadrato può essere inaffidabile quando le frequenze attese sono basse. In tali casi valuti se aggregare categorie in modo giustificabile, raccogliere altre osservazioni o usare un test esatto o basato su simulazione. Un solo valore di V non identifica inoltre le celle che determinano la relazione. Esamini i residui standardizzati o il confronto fra osservato e atteso quando servono direzione e dettaglio. Usi questo risultato come misura trasparente e riproducibile, riportando anche tabella, numerosità, chi-quadrato e ipotesi dello studio.
Casi d'uso
Confrontare le risposte a un sondaggio
Misuri la relazione tra categorie di risposta e gruppi quali area geografica, coorte o canale.
Valutare risultati sperimentali
Riassuma il rapporto tra un trattamento categoriale e un esito categoriale dopo aver costruito la tabella dei conteggi.
Monitorare segmenti di prodotto
Segua l’associazione tra segmenti di clientela e comportamenti senza affidarsi soltanto al chi-quadrato grezzo.
Domande frequenti
Quanto costa il calcolo?
Può eseguirlo gratis nel browser su questa pagina; una richiesta API costa $0.002.
Qual è l’intervallo del V di Cramer?
Normalmente varia da 0, nessuna associazione osservata, a 1, la massima associazione possibile per la tabella.
La tabella può contenere valori decimali?
Sì. Sono accettate frequenze frazionarie finite e non negative per tabelle ponderate costruite correttamente.
Cosa accade a una riga o colonna tutta a zero?
Viene esclusa dalle dimensioni effettive perché non apporta osservazioni. Devono restare almeno due righe e due colonne non vuote.
Perché una tabella con totale zero genera un errore?
Le frequenze attese e la normalizzazione dividono per il totale generale, quindi il V di Cramer non è definito se tutte le celle sono zero.
Il V di Cramer dimostra che una variabile causa l’altra?
No. Descrive l’intensità dell’associazione nella tabella fornita, senza stabilire direzione o causalità.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/stat/cramers-v \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"table":[[20,30],[30,20]]}'const res = await fetch("https://api.kit.forhosting.com/stat/cramers-v", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"table": [
[
20,
30
],
[
30,
20
]
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/stat/cramers-v",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"table": [
[
20,
30
],
[
30,
20
]
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/stat/cramers-v", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"table":[[20,30],[30,20]]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"table":[[20,30],[30,20]]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/stat/cramers-v", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"table": [
[
20,
30
],
[
30,
20
]
]
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "stat.cramers_v",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |