Saneado — ordeno y limpio tu tabla (tú confirmas)

Reviso la tabla y te propongo qué limpiar. Nada se toca sin tu visto bueno: marca o desmarca lo que quieras y las demás pestañas trabajarán con los datos ya saneados.

Vista de los datos saneados
Tipos detectados (revísalos)
Vista de los datos
Tabla descriptiva (Tabla 1)
Con grupo, añade el p-valor con el test adecuado automáticamente (t / Wilcoxon / χ² / Fisher).
Correlación entre dos variables numéricas
Regresión (automática: logística o lineal según el desenlace)
Kaplan-Meier + log-rank (requiere tiempo + evento)
Regresión de Cox — varios factores a la vez sobre el tiempo hasta el evento
Estima el efecto de cada factor (Hazard Ratio) ajustado por los demás, con C-index y comprobación del supuesto de riesgos proporcionales. Es el modelo de supervivencia multivariable estándar.
Capacidad diagnóstica de un marcador (curva ROC)
Mide cómo de bien un valor numérico separa enfermos de sanos: AUC con IC, punto de corte óptimo, sensibilidad, especificidad, VPP/VPN y razones de verosimilitud.
Asociación entre una exposición y un evento
Riesgo relativo, odds ratio, diferencia de riesgo y número necesario a tratar (NNT), con intervalos de confianza.
¿Puedo usar pruebas paramétricas? (normalidad y varianzas)
Shapiro-Wilk (normalidad) y Levene (igualdad de varianzas). Te dice qué prueba es legítima: t de Student, t de Welch o no paramétrica.
¿Cuántos sujetos necesito? (potencia estadística)
Cálculo con R base (power.t.test / power.prop.test). La curva muestra cómo crece la potencia con la muestra.
¿Y si lo que voy a hacer es un MODELO PREDICTIVO? (Riley et al. 2019)
Léelo antes de tocar nada.
1 · Esto NO es potencia. La tarjeta de arriba dimensiona un contraste (¿hay diferencia entre dos grupos?). Un modelo predictivo no tiene esa hipótesis: lo que hay que evitar es el sobreajuste. Son dos preguntas distintas y dos cuentas distintas.
2 · Y NO es «EPV ≥ 10». Esa regla es de Peduzzi (1996). Vittinghoff & McCulloch (2007) la relajaron, van Smeden (2016) mostró que el EPV no es el criterio —depende de la n, del número de predictores y de la fracción de eventos— y Riley (2019) la sustituyó por el encogimiento esperado ≥ 0,9. Es lo que se cita hoy para justificar el tamaño.
3 · Sorpresa habitual: Riley suele pedir MENOS que la regla del 96. Con C-index 0,80, prevalencia 5 % y 10 parámetros pide 70 eventos (EPV = 7); la regla clásica exigiría 100. No es laxitud: es que el EPV nunca fue la magnitud correcta.
4 · ⚠️ «Parámetros» no es «variables»: son GRADOS DE LIBERTAD. Un factor de 4 niveles son 3; un spline con 3 nudos, 2-3; una interacción suma los suyos. Contar variables es el error más común aquí, y deja el tamaño corto.
5 · Esto es para PLANIFICAR. Si los datos ya los tienes, el número que manda es la pendiente de calibración de «Validación interna»: mide el sobreajuste que has tenido de verdad, no el que esperabas.
Para tiempo-evento, pmsampsize exige el R² de Cox-Snell: no lo deriva del C-index. Sácalo de un modelo publicado o de un pilotaje.
Comparación bayesiana de dos grupos — probabilidad directa de superioridad
En vez de un p-valor, responde a la pregunta del clínico: «¿qué probabilidad hay de que un grupo sea mejor que el otro?». Prior no informativo; resultado reproducible.
Crea las variables que tu estudio necesita y no están en la tabla

Todo estudio real define variables que no vienen en el CSV: «FPE = mTICI al primer pase ≥ 2,9», «independencia = mRS ≤ 2», los minutos entre dos marcas horarias, grupos de edad… Aquí las construyes, y aparecen en todas las demás pestañas.

También se limpia desde aquí: «Sanear por rango» corrige valores imposibles y «Recodificar categorías» funde niveles. Para quitar niveles con muy pocos casos (ese «Other» de 1 caso que impide que el modelo converja) tienes la pestaña «Filtrar la muestra».

Cada variable guarda su fórmula: queda trazada y va al informe. La cifra la calcula R.


Variables derivadas definidas (se aplican en orden):
Filtrar la muestra — quitar niveles que el modelo no puede estimar
Léelo antes de tocar nada. Filtrar cambia la población de tu estudio, no solo la tabla.
1 · Para qué sirve. Un nivel con muy pocos casos —o con muchos casos pero casi ningún evento— hace que el modelo no pueda estimar su efecto (separación): el coeficiente se dispara, la matriz se vuelve singular y el bootstrap falla. Medido en un dataset real: con un gender = «Other» de 1 solo caso, el ajuste daba 42 avisos de no convergencia; quitando esa única fila, cero.
2 · Tu modelo deja de valer para esos pacientes. Hay que declararlo en Métodos («se excluyó 1 participante por…») y en el diagrama de flujo. Cada filtro queda guardado con su recuento y sale en el informe.
3 · ⚠️ No filtres por el desenlace. Quitar niveles porque no tienen eventos es una exclusión guiada por el resultado: sesga. Quitar un nivel porque es inestimable (n = 1) es legítimo; hacerlo para que salga significativo, no. El desenlace de abajo es solo para diagnosticar: sirve para ver dónde falta información, no para decidir por ti.
1 · Qué te ha encontrado la app (revisa TODAS las variables categóricas)
2 · Qué quieres quitar — puedes marcar niveles de varias variables a la vez

3 · Filtros aplicados (se aplican en orden, a todas las pestañas)
Laboratorio de hipótesis — formula un contraste sobre CUALQUIER dataset
Elige QUÉ quieres contrastar; la app mira el tipo de variable, aplica el test legítimo (y te dice por qué), y da estimación, IC, p e interpretación.
Regresión penalizada — LASSO / ridge / elastic net
Léelo antes de tocar nada.
1 · La pestaña «Regresión» YA es multivariable. Ajusta y ~ x1 + x2 + … con los efectos mutuamente ajustados; lo que pasa es que no lo decía. (Ejemplo real: la hipertensión pasa de OR 3,70 en univariable a 1,72 al ajustar — era la edad haciendo el trabajo.) Esto de aquí no la sustituye: es para cuando hay más candidatos que información.
2 · ⚠️ «Coger las significativas de univariable» está MAL. No es cuestión de gustos. Dos variables correlacionadas con efectos opuestos se tapan entre sí en univariable: medido en simulación con dos predictores que SÍ influyen, la univariable da p = 0,13 y p = 0,49 —el cribado los descarta los dos— y la multivariable da OR 5,17 y 0,25, ambos con p < 1e-05. Además, los p del modelo final ya no son p: has usado el desenlace para elegir y para juzgar.
3 · Lo correcto es PREESPECIFICAR los predictores por conocimiento clínico y literatura (es lo que pide TRIPOD), respetando el EPV. El LASSO es la herramienta para cuando aun así hay demasiados candidatos — no una máquina de decidir qué es importante.
4 · ¿La edad se incluye siempre? No «por regla», pero sí por criterio: si es un predictor conocido del desenlace —y para casi cualquier desenlace clínico lo es—, se preespecifica y se fuerza dentro, no se le deja competir. Para eso es el campo «Forzar dentro»: entra sin penalizar y el LASSO decide sobre las demás.
5 · Aquí no hay p-valores, y es deliberado. Los coeficientes están contraídos hacia cero: no son «el efecto». Y reajustar un modelo sobre las seleccionadas para sacar p sería la misma circularidad del punto 2. Lo que sí informa es la estabilidad: en cuántas remuestras sobrevive cada variable.
¿Cuánto de mi rendimiento es espejismo? — optimismo por bootstrap
Corrige el optimismo (Harrell): C-index/AUC aparente vs corregido, pendiente de calibración (shrinkage), Brier y Brier Skill Score, EPV y curva de calibración. Deja tiempo+evento vacíos para el modo logística.
Nomograma — el modelo convertido en herramienta de cabecera
Suma los puntos de cada variable y lee el riesgo del paciente. Vale para Cox (tiempo+evento) o para logística (desenlace binario).
¿Sirve el modelo para DECIDIR? — beneficio neto (DCA)
La pregunta que ni el AUC ni la calibración responden. Compara el modelo con «tratar a todos» y «tratar a nadie» en todo el rango de umbrales.
ROC dependiente del tiempo — AUC(t) con censura (IPCW)
En supervivencia el AUC clásico no vale: excluir censurados sesga. Aquí la discriminación se estima a cada horizonte con pesos IPCW (Uno).
Riesgos competitivos — CIF, test de Gray y Fine-Gray
Si un evento competidor impide el de interés, Kaplan-Meier sobrestima el riesgo: lo trata como censura, que equivale a suponer que ese sujeto «habría podido» tener el evento más tarde. La incidencia acumulada (CIF) es lo correcto. Requiere un estado con ≥3 categorías.
Cómo se declara: eliges el evento de interés y cuál es la censura (los que no tuvieron nada). Todo lo demás compite automáticamente, aunque sean varias causas: no hay que elegir «un» competidor. Si tu estado tiene 4 niveles (p. ej. vivo / muerte cardiaca / muerte no cardiaca / trasplante), las tres causas se modelan a la vez y verás una curva por cada una.
¿Qué hago con el centro? — ignorar vs estratificar vs fragilidad
Léelo antes de tocar nada. En un registro multicéntrico no hay una respuesta única: depende de para qué es el modelo. Por eso esta pestaña ajusta las tres opciones y te las enseña juntas.
  • Ignorar el centro. Apenas sesga los efectos si son homogéneos, pero estrecha los intervalos y miente en la calibración de cada centro.
  • Estratificar. Cada centro tiene su riesgo basal. Muy limpio… pero no se puede aplicar a un centro nuevo: no tienes su basal. Y con muchos centros pequeños desperdicia información.
  • Fragilidad (intercepto aleatorio). Lo habitual para un score que va a viajar: más eficiente que una variable ficticia por centro, y su varianza σ² es en sí misma un resultado — cuantifica cuánto riesgo corres al llevarlo a otro sitio.
⚠️ La trampa: al modelar el centro el C-index sube. Es tentador publicar el más alto, pero ese número usa el efecto estimado de cada centro y en un centro nuevo no lo conoces. La cifra que se publica como rendimiento del score es la que IGNORA el centro. La diferencia entre ambas no es rendimiento: es heterogeneidad.
Casos completos vs imputación múltiple (MICE + reglas de Rubin)
La app hace casos completos por defecto: descarta las filas con ausentes. Aquí ves las dos a la vez, porque la pregunta que importa no es «¿cuál uso?» sino «¿cambian mis conclusiones según lo que use?». Si coinciden, tu resultado es robusto y puedes decirlo en el manuscrito.
Checklist TRIPOD — ¿qué le falta a tu manuscrito?

TRIPOD es la guía de publicación para estudios de modelos predictivos. Este checklist marca solo lo que la app puede acreditar con evidencia de tu propio análisis; lo que depende de ti (título, criterios de elegibilidad, cegamiento, ética, interpretación…) se deja en blanco a propósito.

Un checklist que se marcara solo no acreditaría nada. Úsalo como lista de tareas del manuscrito: cuantas más secciones marques en la pestaña «Informe», más ítems podrá acreditar la app.

Informe sellado — descriptivo + los análisis que marques

Genera un informe descargable con la Tabla 1, los métodos, la calidad de los datos y el diccionario de variables, más las secciones de análisis que marques: cada una con su tabla, su gráfico y su lectura.

Lleva el sello SHA-256 encadenado: cualquier cambio en los datos o en un resultado altera el sello, así que el documento es reproducible y a prueba de manipulación. La cifra la calcula R; queda trazada. Ábrelo en el navegador y usa Imprimir → Guardar como PDF.

Usa la configuración que ya tienes puesta en cada pestaña (no hay que elegir las variables otra vez). Si a una sección le faltan sus variables, se omite y te avisa. Las marcadas con ⏳ son lentas (bootstrap).

Tu informe está listo Con marca INSECAB, sellado y reproducible · ábrelo e imprime a PDF.
Descargar informe