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.
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.
pmsampsize exige el R² de Cox-Snell: no lo deriva del C-index. Sácalo de un modelo publicado o de un pilotaje.
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):
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)
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.
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.
- 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.
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.
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).