Análisis Completo

Análisis de Regresión Potencial (Un solo bloque)

# 1. LIBRERÍAS Y DATOS
library(readr)
# Asegúrate de que tu archivo csv esté en el mismo directorio
datasetf <- read_csv("weatherdataANTISANA.csv", show_col_types = FALSE)
# 2. SELECCIÓN DE DATOS
# X = Wind (Velocidad del Viento), Y = Solar (Radiación Solar)
df_pot <- data.frame(
  Viento = datasetf$Wind,
  Radiacion = datasetf$Solar
)

# 3. LIMPIEZA CRÍTICA PARA MODELO POTENCIAL
# IMPORTANTE: En regresión potencial, TANTO X como Y deben ser mayores a 0
df_pot <- na.omit(df_pot)
df_pot <- df_pot[df_pot$Viento > 0 & df_pot$Radiacion > 0, ]
# 4. MODELO POTENCIAL
# Aplicamos logaritmo natural (log) a AMBAS variables: log(Y) ~ log(X)
modelo_pot <- lm(log(Radiacion) ~ log(Viento), data = df_pot)

# 5. CÁLCULO DE PARÁMETROS (Y = a * X^b)
a <- exp(coef(modelo_pot)[1]) # Constante de proporcionalidad (intercepto transformado)
b <- coef(modelo_pot)[2]      # Exponente de potencia (elasticidad)

# 6. GRÁFICA DEL MODELO (Todo ejecutado al mismo tiempo)
plot(df_pot$Viento, df_pot$Radiacion, 
     main="Regresión Potencial: Viento vs Radiación Solar",
     xlab="Velocidad del Viento (m/s)", ylab="Radiación Solar (MJ/m2)",
     pch=16, col="darkorange")

# Añadimos la curva potencial predicha ( Y = a * X^b )
x_seq <- seq(min(df_pot$Viento), max(df_pot$Viento), length.out=100)
y_pred <- a * (x_seq ^ b)
lines(x_seq, y_pred, col="blue", lwd=3)

# 7. ESTIMACIÓN Y RESULTADOS EN CONSOLA
viento_test <- 3.5
prediccion_rad <- a * (viento_test ^ b)

cat("\n--- RESULTADOS DEL MODELO POTENCIAL ---\n")
## 
## --- RESULTADOS DEL MODELO POTENCIAL ---
cat("Exponente o Tasa de Escala (b):", round(b, 4), "\n")
## Exponente o Tasa de Escala (b): 1.7983
cat("Constante inicial (a):", round(a, 4), "\n")
## Constante inicial (a): 4.4622
cat("Estimación para un viento de 3.5 m/s: ", round(prediccion_rad, 2), "MJ/m2\n\n")
## Estimación para un viento de 3.5 m/s:  42.46 MJ/m2
cat("--- RESUMEN ESTADÍSTICO ---\n")
## --- RESUMEN ESTADÍSTICO ---
print(summary(modelo_pot))
## 
## Call:
## lm(formula = log(Radiacion) ~ log(Viento), data = df_pot)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.2556 -0.1941  0.1224  0.3296  1.0350 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  1.49565    0.05986   24.99   <2e-16 ***
## log(Viento)  1.79827    0.09982   18.02   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.5197 on 364 degrees of freedom
## Multiple R-squared:  0.4714, Adjusted R-squared:  0.4699 
## F-statistic: 324.6 on 1 and 364 DF,  p-value: < 2.2e-16
cat("\nCONCLUSIÓN:\nEl modelo de potencias (Y = a * X^b) confirma que a medida que la velocidad del viento incrementa, la radiación solar incidente crece de forma no lineal (potencial). El exponente 'b' positivo demuestra que las ráfagas fuertes barren la nubosidad en el Antisana, permitiendo que la radiación solar penetre con mayor intensidad. Al simular vientos fuertes de 3.5 m/s, se estima que la radiación superará los 42 MJ/m2.\n")
## 
## CONCLUSIÓN:
## El modelo de potencias (Y = a * X^b) confirma que a medida que la velocidad del viento incrementa, la radiación solar incidente crece de forma no lineal (potencial). El exponente 'b' positivo demuestra que las ráfagas fuertes barren la nubosidad en el Antisana, permitiendo que la radiación solar penetre con mayor intensidad. Al simular vientos fuertes de 3.5 m/s, se estima que la radiación superará los 42 MJ/m2.