GREENREG es un paquete pensado para facilitar el ajuste, la validacion de supuestos y la interpretacion de modelos estadisticos comunes en ciencias agropecuarias y ambientales, sin tener que escribir a mano las pruebas de diagnostico cada vez.
Incluye funciones para:
greenreg_rls()) y Multiple
(greenreg_rlm())greenreg_logistico()) y de Poisson
(greenreg_reg_poisson())greenreg_modelo_ar(), greenreg_modelo_ma(),
greenreg_modelo_arma(),
greenreg_modelo_arima())greenreg_analisis_datos(), que sugiere que modelo usar
segun el tipo de la variable respuestaEl flujo tipico es: ajustar el modelo, imprimirlo (para leer coeficientes, VIF y el veredicto de los supuestos) y graficarlo (para inspeccionar los diagnosticos visualmente).
data(datos_rendimiento_maiz)
modelo <- greenreg_rlm(rendimiento_maiz_ton_ha ~ ., data = datos_rendimiento_maiz)
modelo
#>
#> ==================================================================
#> REGRESIÓN LINEAL MULTIPLE (RLM)
#> ==================================================================
#>
#> --- 1. MODELO MATEMÁTICO ESTIMADO ---
#> Variable Dependiente (Y): rendimiento_maiz_ton_ha
#> Predictores (X): precipitacion_mm, temperatura_c, fertilizante_kg_ha
#> Ecuación Estimada: rendimiento_maiz_ton_ha = 1.5384 + 0.004 * precipitacion_mm + 0.1196 * temperatura_c + 0.0149 * fertilizante_kg_ha
#> Ajuste (R2 Ajustado): 91.99 %
#>
#> --- 2. COEFICIENTES ESTIMADOS ---
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) 1.5383598 0.3235100 4.755 5.75e-06 ***
#> precipitacion_mm 0.0040207 0.0001536 26.180 < 2e-16 ***
#> temperatura_c 0.1196020 0.0112550 10.627 < 2e-16 ***
#> fertilizante_kg_ha 0.0149040 0.0005876 25.364 < 2e-16 ***
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Multicolinealidad (VIF):
#> precipitacion_mm temperatura_c fertilizante_kg_ha
#> 1.01 1.01 1.00
#>
#> --- 3. INTERVALOS DE CONFIANZA ---
#> 2.5 % 97.5 %
#> (Intercept) 0.8976 2.1791
#> precipitacion_mm 0.0037 0.0043
#> temperatura_c 0.0973 0.1419
#> fertilizante_kg_ha 0.0137 0.0161
#>
#> --- 4. ANÁLISIS DE VARIANZA (ANOVA) ---
#> Df Sum Sq Mean Sq F value Pr(>F)
#> precipitacion_mm 1.0000 92.6101 92.6101 632.68 <2e-16 ***
#> temperatura_c 1.0000 13.5819 13.5819 92.79 <2e-16 ***
#> fertilizante_kg_ha 1.0000 94.1686 94.1686 643.32 <2e-16 ***
#> Residuals 116.0000 16.9799 0.1464 NA NA
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> --- 5. VERIFICACIÓN DE SUPUESTOS ---
#> Linealidad (Rainbow Test): [p-valor: 0.3609 ] -> No se rechaza la linealidad.
#> Normalidad (Shapiro-Wilk): [p-valor: 0.0193 ] -> Se rechaza la normalidad de los residuos.
#> Homocedasticidad (B-Pagan): [p-valor: 0.9307 ] -> No se rechaza la homocedasticidad.
#> Independencia (D-Watson): [Estad.: 1.94 ] -> No hay evidencia de autocorrelación.
#> Multicolinealidad (VIF): No hay problemas graves de Multicolinealidad (VIF < 5).
#>
#> --- 6. RESUMEN DEL MODELO ---
#> GLOBAL: BIEN: El modelo en conjunto es SIGNIFICATIVO (al menos una variable ayuda a predecir).
#> AJUSTE: El modelo explica el 91.99% de la variabilidad (R2 Ajustado). Ajuste BUENO.
#> VALIDEZ: El modelo cumple con los supuestos básicos.
#>
#> Use 'plot(modelo)' para ver diagnósticos visuales.
#> ==================================================================print() reporta, en orden: los coeficientes con sus
intervalos de confianza, el Factor de Inflacion de la Varianza (VIF)
para detectar multicolinealidad, y una bateria de pruebas de supuestos
(normalidad, homocedasticidad, independencia y linealidad) traducidas a
un veredicto accionable.
#> `geom_smooth()` using formula = 'y ~ x'
#> `geom_smooth()` using formula = 'y ~ x'
plot() genera una secuencia de graficas de diagnostico:
distribucion de variables, relacion Y vs. cada predictor, ajuste
observado-vs-predicho, QQ-plot de normalidad, homocedasticidad,
independencia, VIF, distancia de Cook y apalancamiento (leverage).
data(datos_roya_cafe)
modelo_log <- greenreg_logistico(
presencia_roya ~ humedad_relativa_pct + altitud_msnm + manejo_sombra,
data = datos_roya_cafe
)
#> Waiting for profiling to be done...
modelo_log
#>
#> ==========================================================
#> REGRESIÓN LOGÍSTICA
#> ==========================================================
#>
#> --- 1. MODELO Y ECUACIÓN ---
#> Fórmula aplicada: presencia_roya ~ humedad_relativa_pct + altitud_msnm + manejo_sombra
#> Ecuación estimada:
#> logit(p) = -27.484 + (0.306 * humedad_relativa_pct) + (-0.001 * altitud_msnm) + (-2.289 * manejo_sombra)
#>
#> --- 2. COEFICIENTES ESTIMADOS ---
#> Estimaciones en escala Logit (log-odds):
#> Estimate Std. Error z value Pr(>|z|)
#> (Intercept) -2.748e+01 8.912e+00 -3.084 0.00204 **
#> humedad_relativa_pct 3.061e-01 9.733e-02 3.145 0.00166 **
#> altitud_msnm -7.489e-04 1.089e-03 -0.688 0.49170
#> manejo_sombra -2.289e+00 9.251e-01 -2.474 0.01335 *
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Interpretación en Odds Ratios (OR):
#> OR 2.5 % 97.5 % P-valor
#> humedad_relativa_pct 1.3581 1.1647 1.7239 0.0017
#> altitud_msnm 0.9993 0.9970 1.0014 0.4917
#> manejo_sombra 0.1014 0.0122 0.5231 0.0134
#> NOTA: El intercepto se omite de esta tabla (su OR no tiene una
#> interpretación útil; representa el caso base con predictores en 0).
#> GUIA: OR > 1 Aumenta prob. | OR < 1 Disminuye prob.
#>
#> --- 3. EVALUACIÓN DEL MODELO ---
#> Prueba de Razon de Verosimilitud (LRT):
#> Chi-cuadrado: 33.441 | GL: 3 | p-valor: 0.0000
#> Resultado: Modelo Globalmente Significativo
#>
#> --- 4. BONDAD DE AJUSTE ---
#> Log-Verosimilitud (LogLik): -21.9
#> AIC (Criterio de Akaike): 51.801
#> AUC (Área bajo la curva ROC): 0.95
#> * Pseudo R2 (McFadden) = 0.433. (Por encima de 0.4: revisa sobreajuste o separación casi perfecta antes de celebrar; la regla 0.2-0.4 no aplica aquí.)
#> Prueba de Wald: Revisar asteriscos en la sección 2 (Significancia individual).
#>
#> --- 5. MATRIZ DE CONFUSIÓN (Real vs Predicho) ---
#> Predicho
#> Real 0 1
#> 0 168 2
#> 1 7 3
#>
#> CÓMO LEER ESTA GRÁFICA:
#> Buscamos una diagonal principal (Real y Predicho coinciden) con valores altos.
#> Los valores fuera de la diagonal representan Falsos Positivos y Falsos Negativos.
#> * Precisión Global (Accuracy): 95%. Tasa de no información (predecir siempre la clase mayoritaria): 94.4%.
#> Sensibilidad (VP/(VP+FN)): 30.0% Especificidad (VN/(VN+FP)): 98.8%
#> VPP (VP/(VP+FP)): 60.0% VPN (VN/(VN+FN)): 96.0%
#> Exactitud balanceada: 64.4%
#> AVISO: Con clases desbalanceadas, compara la Accuracy contra la tasa de
#> no informacion (arriba); si son parecidas, el modelo no aporta
#> mucho mas que predecir siempre la clase mayoritaria.
#>
#> --- 6. VERIFICACIÓN DE SUPUESTOS ---
#> Linealidad en el Logit: Supuesta (Usar plot(x) para verificar gráficos de residuos).
#> Independencia: Observaciones independientes asumidas por diseño.
#> - OKEY: El modelo es significativamente mejor que el nulo.
#> - OKEY: No hay multicolinealidad severa.
#> - ALERTA: Se detectaron casos influyentes (Distancia de Cook). Revisa los casos atípicos.
#> - ALERTA: Hay observaciones con Leverage alto (puntos atípicos en X). Usa plot() para ver el gráfico.
#>
#> --- 7. RESUMEN DEL MODELO ---
#> Conclusión rapida: Ejemplo de interpretación: La variable 'humedad_relativa_pct' es significativa. Su OR es 1.36, lo que significa que AUMENTA la probabilidad del evento.
#>
#> ALERTA: El modelo presenta advertencias técnicas (Multicolinealidad, Puntos influyentes o Leverage).
#> Se recomienda usar plot(nombre_del_objeto) para ver los gráficos de diagnóstico.
#>
#> ==========================================================El resultado incluye los momios (Odds Ratio), la pseudo-R2 de McFadden, la matriz de confusion y el area bajo la curva ROC (AUC).
data(datos_anomalia_temperatura)
modelo_ts <- greenreg_modelo_ar(datos_anomalia_temperatura$anomalia_c, p = 2)
modelo_ts
#>
#> ==========================================================
#> MODELO AUTORREGRESIVO AR(2)
#> ==========================================================
#>
#> --- 1. MODELO Y ECUACIÓN ---
#> Ecuación de Diferencias Estimada:
#> Y(t) = -0.048 + (0.963 * Y(t-1)) + (-0.378 * Y(t-2)) + E(t)
#> AIC (Criterio de Akaike): 26.73
#> NOTA: El intercepto representa el valor medio de la serie si es estacionaria.
#>
#> --- 2. COEFICIENTES ESTIMADOS (Parámetros Phi) ---
#> Estimacion Std.Error z.value P.valor
#> ar1 0.96319 0.05967 16.14326 0.00
#> ar2 -0.37801 0.05957 -6.34565 0.00
#> intercept -0.04784 0.03899 -1.22689 0.22
#>
#> Persistencia: El coeficiente AR1 es 0.96. Esto indica que tanto del valor de ayer (t-1) se transfiere a hoy.
#> GUIA: Si |Phi| es cercano a 1, la serie tiene mucha memoria (persistencia).
#>
#> --- 3. IDENTIFICACIÓN DEL MODELO (Orden p) ---
#> Orden seleccionado: p = 2
#> Criterio ACF: Las autocorrelaciones decaen exponencialmente o de forma sinoidal.
#> Criterio PACF: Los coeficientes de autocorrelación parcial se cortan despues del lag 2 .
#> NOTA: Si ves barras significativas en PACF despues de p, podrias necesitar un orden mayor.
#>
#> --- 4. VERIFICACIÓN DE SUPUESTOS ---
#> A) Estacionariedad (Raíces Unitarias):
#> - Módulos de raíces inversas: 0.615, 0.615
#> - CONCLUSIÓN: El modelo es ESTABLE (Estacionario). Puede usarse para predecir.
#>
#> B) Diagnóstico de Errores (E ~ RB):
#> Media de los residuos: -0.0001 (Esperado: 0)
#> No Autocorrelación (Ljung-Box p-valor): 0.0396 [lag=10, fitdf=2]
#> -> CONCLUSIÓN: Existe Autocorrelación. El modelo no capturó toda la dinámica (Faltan lags).
#> Normalidad (Shapiro p-valor): 0.4942
#> -> CONCLUSIÓN: No se rechaza la normalidad de los errores (OKEY). Los intervalos de confianza son fiables.
#>
#> --- 5. RESUMEN DEL MODELO ---
#> ADVERTENCIA: El modelo presenta deficiencias técnicas.
#> Revisa si es necesario diferenciar la serie (d=1) o cambiar el orden p.
#>
#> Usa plot(modelo) para visualizar la serie, ACF y raíces unitarias.
#> ==========================================================greenreg_modelo_ar() (y sus analogos
greenreg_modelo_ma(), greenreg_modelo_arma(),
greenreg_modelo_arima()) reportan la estabilidad del modelo
(raices inversas dentro del circulo unitario), y el diagnostico de
residuos mediante la prueba de Ljung-Box (ruido blanco) y Shapiro-Wilk
(normalidad).
Cuando no es evidente que tipo de modelo conviene,
greenreg_analisis_datos() inspecciona la variable respuesta
y sugiere una opcion:
greenreg_analisis_datos(datos_rendimiento_maiz, "rendimiento_maiz_ton_ha")
#>
#> Asistente de Análisis de Datos
#> ===========================================
#> Base de datos: datos_rendimiento_maiz
#> Objetivo: 'rendimiento_maiz_ton_ha'
#> Observaciones: 120 | Predictoras: 3
#>
#> RECOMENDACIÓN AUTOMÁTICA:
#> -> Sugerencia: Opción 1
#> -> Motivo: Variable continua (Regresión Lineal).
#>
#> Opciones Disponibles:
#> 1. Regresión Lineal * (Recomendado)
#> 2. Modelos GLM (Logística/Poisson)
#> 3. Series de Tiempo
#> -> Seleccion automática aplicada: 1
#>
#> Analizando para Regresión Lineal...
#>
#> ANÁLISIS COMPLETADO.
#> NOTA: El proceso stepwise (AIC) conservó todas las variables; no se eliminó ninguna.
#> --------------------------------------------------
#> OPCIÓN A: Modelo con TODAS las variables
#> --------------------------------------------------
#> modelo_rlm_full <- greenreg_rlm(rendimiento_maiz_ton_ha ~ ., data = datos_rendimiento_maiz)
#> modelo_rlm_full
#> plot(modelo_rlm_full)
#> --------------------------------------------------
#>
#> OPCIÓN B: Modelo OPTIMIZADO (Variables Seleccionadas)
#> (Elimina variables que aportan ruido o son redundantes)
#> --------------------------------------------------
#> modelo_rlm_opt <- greenreg_rlm(rendimiento_maiz_ton_ha ~ precipitacion_mm + temperatura_c + fertilizante_kg_ha, data = datos_rendimiento_maiz)
#> modelo_rlm_opt
#> plot(modelo_rlm_opt)
#> --------------------------------------------------Consulta la documentacion de cada funcion (por ejemplo,
?greenreg_rlm) para el detalle de cada estadistico
reportado y las referencias metodologicas (Montgomery et al., 2021; Box
& Jenkins, 1970) en las que se basa el paquete.