Calculadora de V de Cramer para tablas de contingencia
La V de Cramer resume la intensidad de la asociación entre dos variables categóricas en una escala de cero a uno.
Ejecutar — gratis
Introduzca las frecuencias observadas como una matriz de contingencia; la calculadora obtiene el estadístico chi-cuadrado de Pearson y lo normaliza según las dimensiones efectivas y el total de la tabla. Es útil cuando una prueba chi-cuadrado indica que existe relación, pero usted también necesita una medida comparable del tamaño del efecto. La respuesta incluye el estadístico intermedio y las dimensiones para que pueda revisar el cálculo.
Prepare correctamente la tabla de contingencia
Organice las frecuencias observadas en una matriz rectangular. Cada fila debe representar una categoría de la primera variable y cada columna, una categoría de la segunda. Una celda contiene el número, o la frecuencia ponderada no negativa, de observaciones que pertenecen a esa combinación. No envíe porcentajes normalizados por separado para cada fila salvo que funcionen realmente como ponderaciones comparables, pues la V de Cramer depende tanto de los totales marginales como del patrón interno. Todas las filas deben tener igual número de celdas y la matriz necesita al menos dos filas y dos columnas. Los valores deben ser finitos y no negativos. Se admiten valores fraccionarios para tablas ponderadas, aunque los datos ordinarios suelen usar recuentos enteros. Las categorías totalmente vacías no causan problemas: una fila o columna de ceros se excluye de las dimensiones efectivas porque no aporta información y generaría una frecuencia esperada nula. Sin embargo, el total general no puede ser cero y deben quedar al menos dos filas y dos columnas no vacías.
Comprenda cómo se realiza el cálculo
Primero se suman todas las filas y columnas y se obtiene el total general. Para cada celda activa, la frecuencia esperada bajo independencia es el total de su fila multiplicado por el total de su columna y dividido entre el total general. El estadístico chi-cuadrado de Pearson suma el cuadrado de la diferencia entre la frecuencia observada y la esperada, dividido entre esa frecuencia esperada. Después, la V de Cramer normaliza chi-cuadrado con el total general y el menor de los grados de las filas y columnas: la raíz cuadrada de chi-cuadrado dividida entre el total por min(filas menos uno, columnas menos uno). Así puede comparar asociaciones entre tablas de tamaños distintos mejor que con chi-cuadrado sin normalizar. La salida contiene `cramers_v`, `chi_square`, `total`, `rows` y `columns`. Filas y columnas reflejan las dimensiones no vacías empleadas. Un valor próximo a cero señala poca desviación de la independencia; uno próximo a uno indica una asociación categórica fuerte. Su significado práctico depende siempre del contexto, el muestreo y la estructura de categorías.
Interprete el resultado sin exagerarlo
Considere la V de Cramer un resumen del tamaño del efecto, no una prueba de causalidad ni un sustituto de la significación estadística. Una muestra grande puede producir un chi-cuadrado significativo para una asociación débil, mientras que una muestra pequeña puede dejar incierto un patrón aparentemente importante. Revise los recuentos, las frecuencias esperadas, el método de muestreo y el contexto junto con V. Etiquetas como débil, moderada o fuerte son convenciones aproximadas; los umbrales útiles cambian según las categorías y las consecuencias de la decisión. Extreme la cautela con tablas dispersas, porque la aproximación chi-cuadrado puede ser poco fiable cuando las frecuencias esperadas son pequeñas. En ese caso, valore combinar categorías de forma justificable, reunir más observaciones o aplicar una prueba exacta o por simulación. Una sola V tampoco revela qué celdas impulsan la relación. Examine residuos estandarizados o la comparación entre valores observados y esperados cuando necesite dirección y detalle. Use esta calculadora como medida transparente y reproducible, y comunique también la tabla, el tamaño muestral, chi-cuadrado y los supuestos del estudio.
Qué puede hacer con ella
Comparar respuestas de encuestas
Mida la relación entre categorías de respuesta y grupos como región, cohorte o canal.
Evaluar resultados experimentales
Resuma la relación entre un tratamiento categórico y un resultado categórico después de construir la tabla de recuentos.
Supervisar segmentos de producto
Siga la asociación entre segmentos de clientes y conductas sin depender únicamente del chi-cuadrado bruto.
Preguntas frecuentes
¿Cuánto cuesta el cálculo?
Puede ejecutarlo gratis en el navegador de esta página; una solicitud por API cuesta $0.002.
¿Qué intervalo utiliza la V de Cramer?
Normalmente va de 0, ausencia de asociación observada, a 1, máxima asociación posible para la tabla.
¿Puede contener decimales la tabla?
Sí. Se aceptan frecuencias fraccionarias finitas y no negativas para tablas ponderadas correctamente construidas.
¿Qué ocurre con una fila o columna de ceros?
Se excluye de las dimensiones efectivas porque no aporta observaciones. Deben quedar al menos dos filas y dos columnas no vacías.
¿Por qué genera un error una tabla con total cero?
Las frecuencias esperadas y la normalización dividen entre el total general, por lo que la V de Cramer no está definida si todas las celdas valen cero.
¿Demuestra la V de Cramer que una variable causa la otra?
No. Describe la intensidad de asociación en la tabla proporcionada, sin establecer dirección ni causalidad.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su 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)Ejemplo de solicitud
{
"table": [
[
20,
30
],
[
30,
20
]
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "stat.cramers_v",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |