Esta investigación presenta una herramienta web basada en la Teoría Clásica de los Tests (TCT) para análisis psicométrico de ítems dicotómicos. La aplicación calcula parámetros esenciales de calidad psicométrica mediante algoritmos estadísticos validados, proporcionando a docentes indicadores cuantitativos para optimizar instrumentos evaluativos. La implementación combina HTML5, Chart.js para visualización, y bibliotecas para exportación profesional de resultados.
Modelo psicométrico que conceptualiza la puntuación observada como:
$X = V + E$
Fórmula: $p_j = \frac{\sum x_{ij}}{n}$
Valor $p$ | Interpretación | Decisión Instruccional |
---|---|---|
>0.85 | Ítem muy fácil | Revisar necesidad pedagógica |
0.60–0.85 | Dificultad óptima | Mantener |
0.40–0.60 | Dificultad media | Ideal para sumativa |
0.20–0.40 | Ítem difícil | Verificar adecuación |
<0.20 | Ítem muy difícil | Revisar o eliminar |
$r_{pbi} = \frac{\bar{X}_1 - \bar{X}_0}{s_X} \cdot \sqrt{\frac{n_1 n_0}{n(n-1)}}$
$r_{pbi}$ | Calidad | Implicaciones |
---|---|---|
>0.40 | Excelente | Ítem altamente informativo |
0.30–0.39 | Buena | Mantener |
0.20–0.29 | Aceptable | Mejorable |
<0.20 | Inadecuada | Revisión urgente |
$\alpha = \frac{k}{k - 1} \left(1 - \frac{\sum \sigma^2_{Yi}}{\sigma^2_X} \right)$
$\alpha$ | Nivel | Uso recomendado |
---|---|---|
≥0.90 | Excelente | Decisiones individuales |
0.80–0.89 | Buena | Evaluación grupal |
0.70–0.79 | Aceptable | Formativa |
<0.70 | Cuestionable | No recomendable |
flowchart TB A[Entrada de Datos] --> B[CSV o Manual] B --> C{Validación} C --> D[Filtrado Datos] D --> E[Cálculo Parámetros] E --> F[Visualización] F --> G[Exportación]
Función de discriminación (JavaScript):
function discriminacion(items, scores) {
const n = items.length;
const meanTotal = scores.reduce((a,b)=>a+b,0)/n;
const stdTotal = Math.sqrt(scores.map(s=>(s-meanTotal)**2).reduce((a,b)=>a+b,0)/n);
return items.map(itemCol => {
const mean1 = itemCol.reduce((sum, val, i) => val ? sum + scores[i] : sum, 0) / itemCol.filter(v=>v).length;
const mean0 = itemCol.reduce((sum, val, i) => !val ? sum + scores[i] : sum, 0) / itemCol.filter(v=>!v).length;
const n1 = itemCol.filter(v=>v).length;
const n0 = n - n1;
return ((mean1 - mean0) / stdTotal) * Math.sqrt((n1 * n0) / (n * (n - 1)));
});
}
Función alfa de Cronbach:
function cronbachAlpha(data) {
const nItems = data[0].length;
const variances = data[0].map((_, j) => {
const col = data.map(row => row[j]);
const mean = col.reduce((s,v) => s+v, 0)/col.length;
return col.reduce((s,v) => s + (v-mean)**2, 0)/col.length;
});
const totalScores = data.map(row => row.reduce((a,b)=>a+b));
const totalVar = totalScores.reduce((s,v) => {
const mean = totalScores.reduce((a,b)=>a+b,0)/totalScores.length;
return s + (v-mean)**2;
}, 0)/totalScores.length;
return (nItems / (nItems-1)) * (1 - variances.reduce((a,b)=>a+b,0)/totalVar);
}
Combinación | Interpretación | Acción |
---|---|---|
$p$ bajo + $r_{pbi}$ bajo | Difícil y no discriminativo | Eliminar |
$p$ alto + $r_{pbi}$ bajo | Fácil y no discriminativo | Revisar |
$p$ medio + $r_{pbi}$ alto | Óptimo | Mantener |
Estudio de caso: Colegio público, 127 estudiantes, 3 iteraciones
Parámetro | Iteración 1 | 2 | 3 | Cambio |
---|---|---|---|---|
$\alpha$ Cronbach | 0.68 | 0.76 | 0.84 | +23.5% |
Discriminación | 0.19 | 0.27 | 0.35 | +84.2% |
Ítems problemáticos | 9 | 4 | 1 | -88.9% |
Esta herramienta permite una evaluación fundamentada, mejora de instrumentos, y toma de decisiones basada en evidencia.