library(tidyverse)
library(readxl)
library(VIM)
library(GGally)

Importaciones

meteo_2015 <- read_csv("sunlab-faro_meteo_2015.csv")
meteo_2016 <- read_csv("sunlab-faro_meteo_2016.csv")
prod_2015 <- read_csv("sunlab-faro-pv-2015.csv")
prod_2016 <- read_csv("sunlab-faro-pv-2016.csv")
meteo_2015_2016 <- bind_rows(meteo_2015, meteo_2016)
prod_2015_2016 <- bind_rows(prod_2015, prod_2016)

rm(meteo_2015)
rm(meteo_2016)
rm(prod_2015)
rm(prod_2016)

Echamos un vistazo a los datos de produccion

summary(prod_2015_2016)
##     Datetime                   A_Vertical - Voltage DC [V]
##  Min.   :2015-01-01 07:40:00   Min.   :10.20              
##  1st Qu.:2015-05-28 18:54:30   1st Qu.:26.65              
##  Median :2015-10-08 17:39:00   Median :27.95              
##  Mean   :2015-12-04 18:29:34   Mean   :26.28              
##  3rd Qu.:2016-07-19 14:47:30   3rd Qu.:29.10              
##  Max.   :2016-12-29 17:31:00   Max.   :35.05              
##                                NA's   :13979              
##  A_Vertical - Current DC [A] A_Vertical - Power DC [W]
##  Min.   :0.000               Min.   :  0.00           
##  1st Qu.:0.710               1st Qu.: 15.90           
##  Median :1.822               Median : 50.94           
##  Mean   :2.252               Mean   : 63.56           
##  3rd Qu.:3.460               3rd Qu.:100.67           
##  Max.   :8.105               Max.   :245.18           
##  NA's   :13979               NA's   :13979            
##  A_Optimal - Voltage DC [V] A_Optimal - Current DC [A]
##  Min.   :10.10              Min.   : 0.000            
##  1st Qu.:27.05              1st Qu.: 1.097            
##  Median :27.90              Median : 3.482            
##  Mean   :27.53              Mean   : 3.574            
##  3rd Qu.:28.95              3rd Qu.: 5.860            
##  Max.   :35.30              Max.   :10.238            
##  NA's   :8342               NA's   :8342              
##  A_Optimal - Power DC [W] A_Horizontal - Voltage DC [V]
##  Min.   :  0.00           Min.   :10.10                
##  1st Qu.: 30.74           1st Qu.:26.90                
##  Median : 99.79           Median :27.70                
##  Mean   :100.48           Mean   :26.53                
##  3rd Qu.:165.06           3rd Qu.:28.90                
##  Max.   :307.64           Max.   :35.35                
##  NA's   :8342             NA's   :9039                 
##  A_Horizontal - Current DC [A] A_Horizontal - Power DC [W]
##  Min.   : 0.000                Min.   :  0.00             
##  1st Qu.: 1.095                1st Qu.: 27.55             
##  Median : 2.930                Median : 83.44             
##  Mean   : 3.163                Mean   : 87.10             
##  3rd Qu.: 5.055                3rd Qu.:140.21             
##  Max.   :10.238                Max.   :304.63             
##  NA's   :9039                  NA's   :9039               
##  A_Vertical - Temperature [ºC] A_Optimal - Temperature [ºC]
##  Min.   : 1.80                 Min.   : 2.0                
##  1st Qu.:22.60                 1st Qu.:21.5                
##  Median :30.20                 Median :29.0                
##  Mean   :29.21                 Mean   :28.8                
##  3rd Qu.:35.80                 3rd Qu.:36.0                
##  Max.   :52.80                 Max.   :58.6                
##                                                            
##  A_Horizontal - Temperature [ºC] B_Vertical - Voltage DC [V]
##  Min.   : 1.40                   Min.   :10.30              
##  1st Qu.:20.70                   1st Qu.:26.45              
##  Median :28.30                   Median :27.00              
##  Mean   :28.59                   Mean   :25.48              
##  3rd Qu.:36.30                   3rd Qu.:27.60              
##  Max.   :64.80                   Max.   :34.65              
##                                  NA's   :11201              
##  B_Vertical - Current DC [A] B_Vertical - Power DC [W]
##  Min.   :0.000               Min.   :  0.00           
##  1st Qu.:0.678               1st Qu.: 14.95           
##  Median :1.847               Median : 49.89           
##  Mean   :2.382               Mean   : 64.48           
##  3rd Qu.:3.695               3rd Qu.:102.69           
##  Max.   :9.078               Max.   :255.99           
##  NA's   :11201               NA's   :11201            
##  B_Optimal - Voltage DC [V] B_Optimal - Current DC [A]
##  Min.   :10.35              Min.   : 0.000            
##  1st Qu.:26.70              1st Qu.: 1.083            
##  Median :27.35              Median : 3.438            
##  Mean   :26.31              Mean   : 3.654            
##  3rd Qu.:28.00              3rd Qu.: 6.250            
##  Max.   :35.15              Max.   :10.238            
##  NA's   :6730               NA's   :6730              
##  B_Optimal - Power DC [W] B_Horizontal - Voltage DC [V]
##  Min.   :  0.00           Min.   :10.65                
##  1st Qu.: 27.08           1st Qu.:26.70                
##  Median : 96.81           Median :27.35                
##  Mean   : 99.69           Mean   :26.26                
##  3rd Qu.:170.25           3rd Qu.:28.35                
##  Max.   :302.01           Max.   :35.10                
##  NA's   :6730             NA's   :11902                
##  B_Horizontal - Current DC [A] B_Horizontal - Power DC [W]
##  Min.   : 0.000                Min.   :  0.00             
##  1st Qu.: 1.077                1st Qu.: 25.83             
##  Median : 2.857                Median : 81.42             
##  Mean   : 3.120                Mean   : 85.54             
##  3rd Qu.: 4.980                3rd Qu.:139.04             
##  Max.   :10.238                Max.   :300.98             
##  NA's   :11902                 NA's   :11902              
##  B_Vertical - Temperature [ºC] B_Optimal - Temperature [ºC]
##  Min.   : 3.20                 Min.   : 2.30               
##  1st Qu.:23.50                 1st Qu.:22.50               
##  Median :30.50                 Median :30.90               
##  Mean   :29.53                 Mean   :30.67               
##  3rd Qu.:35.70                 3rd Qu.:38.70               
##  Max.   :51.10                 Max.   :62.00               
##                                                            
##  B_Horizontal - Temperature [ºC]
##  Min.   : 1.60                  
##  1st Qu.:21.10                  
##  Median :28.30                  
##  Mean   :28.59                  
##  3rd Qu.:36.10                  
##  Max.   :62.10                  
## 
glimpse(prod_2015_2016)
## Observations: 420,507
## Variables: 25
## $ Datetime                          <dttm> 2015-01-09 12:52:00, 2015-0...
## $ `A_Vertical - Voltage DC [V]`     <dbl> 29.35, 29.10, 29.10, 29.35, ...
## $ `A_Vertical - Current DC [A]`     <dbl> 6.4125, 6.3975, 6.3325, 6.41...
## $ `A_Vertical - Power DC [W]`       <dbl> 188.206875, 186.167250, 184....
## $ `A_Optimal - Voltage DC [V]`      <dbl> 28.75, 28.45, 28.45, 28.75, ...
## $ `A_Optimal - Current DC [A]`      <dbl> 7.1700, 7.1925, 7.0925, 7.21...
## $ `A_Optimal - Power DC [W]`        <dbl> 206.13750, 204.62662, 201.78...
## $ `A_Horizontal - Voltage DC [V]`   <dbl> 29.25, 29.50, 29.45, 29.50, ...
## $ `A_Horizontal - Current DC [A]`   <dbl> 4.3225, 4.2525, 4.1825, 4.30...
## $ `A_Horizontal - Power DC [W]`     <dbl> 126.43313, 125.44875, 123.17...
## $ `A_Vertical - Temperature [ºC]`   <dbl> 32.6, 32.4, 33.2, 32.2, 32.8...
## $ `A_Optimal - Temperature [ºC]`    <dbl> 28.8, 28.6, 29.4, 28.2, 27.8...
## $ `A_Horizontal - Temperature [ºC]` <dbl> 26.5, 26.1, 26.8, 26.4, 26.1...
## $ `B_Vertical - Voltage DC [V]`     <dbl> 27.55, 27.60, 27.40, 27.40, ...
## $ `B_Vertical - Current DC [A]`     <dbl> 7.0925, 7.0475, 7.0100, 7.14...
## $ `B_Vertical - Power DC [W]`       <dbl> 195.39837, 194.51100, 192.07...
## $ `B_Optimal - Voltage DC [V]`      <dbl> 27.85, 28.05, 27.85, 28.05, ...
## $ `B_Optimal - Current DC [A]`      <dbl> 7.2225, 7.1125, 7.0450, 7.17...
## $ `B_Optimal - Power DC [W]`        <dbl> 201.14663, 199.50563, 196.20...
## $ `B_Horizontal - Voltage DC [V]`   <dbl> 29.05, 29.05, 28.75, 28.95, ...
## $ `B_Horizontal - Current DC [A]`   <dbl> 4.1775, 4.1275, 4.1125, 4.19...
## $ `B_Horizontal - Power DC [W]`     <dbl> 121.356375, 119.903875, 118....
## $ `B_Vertical - Temperature [ºC]`   <dbl> 31.2, 31.5, 31.9, 31.7, 32.2...
## $ `B_Optimal - Temperature [ºC]`    <dbl> 30.2, 30.0, 30.9, 29.9, 30.7...
## $ `B_Horizontal - Temperature [ºC]` <dbl> 25.3, 24.9, 25.7, 25.1, 25.6...
prod_2015_2016_final <- prod_2015_2016 %>%
                        select(Datetime, 
                               'A_Optimal - Power DC [W]',
                               'B_Optimal - Power DC [W]')
summary(meteo_2015_2016)
##     Datetime                   Ambient Temperature [ºC]
##  Min.   :2015-01-01 00:00:00   Min.   :-1.500e+09      
##  1st Qu.:2015-05-26 11:06:30   1st Qu.: 1.400e+01      
##  Median :2015-10-18 23:12:00   Median : 1.800e+01      
##  Mean   :2015-11-27 03:00:27   Mean   :-5.358e+03      
##  3rd Qu.:2016-05-17 18:32:30   3rd Qu.: 2.300e+01      
##  Max.   :2016-12-31 23:00:00   Max.   : 3.800e+01      
##                                                        
##  Global Radiation [W/m2] Diffuse Radiation [W/m2] Ultraviolet [W/m2]
##  Min.   :   0.7285       Min.   :  1.6            Min.   : 0.4954   
##  1st Qu.:   1.5693       1st Qu.:  1.7            1st Qu.: 0.5106   
##  Median :  13.0063       Median : 16.5            Median : 1.5008   
##  Mean   : 237.1203       Mean   : 68.2            Mean   :14.5440   
##  3rd Qu.: 452.7272       3rd Qu.:103.7            3rd Qu.:26.0017   
##  Max.   :1421.3282       Max.   :720.4            Max.   :84.2660   
##                          NA's   :399744                             
##  Wind Velocity [m/s]  Wind Direction [º] Precipitation [mm]
##  Min.   :-1.500e+09   Min.   :  0.0      Min.   :0         
##  1st Qu.: 1.000e+00   1st Qu.:123.6      1st Qu.:0         
##  Median : 2.000e+00   Median :235.8      Median :0         
##  Mean   :-5.375e+03   Mean   :212.8      Mean   :0         
##  3rd Qu.: 3.000e+00   3rd Qu.:296.7      3rd Qu.:0         
##  Max.   : 1.200e+01   Max.   :360.0      Max.   :2         
##                                          NA's   :776160    
##  Atmospheric pressure [hPa] Direct Radiation [W/m2]
##  Min.   : 999.1             Min.   :  1.6          
##  1st Qu.:1014.3             1st Qu.:  1.7          
##  Median :1020.4             Median :  8.6          
##  Mean   :1019.9             Mean   : 63.9          
##  3rd Qu.:1025.7             3rd Qu.: 91.9          
##  Max.   :1033.8             Max.   :790.1          
##  NA's   :776160             NA's   :437159
meteo_2015_2016_final <- meteo_2015_2016 %>%
                        select(Datetime, 
                               'Ambient Temperature [ºC]',
                               'Diffuse Radiation [W/m2]',
                               'Ultraviolet [W/m2]',
                               'Global Radiation [W/m2]')

Cruzamos las tablas por Datetime

tabla_final <- meteo_2015_2016_final %>%
  left_join(prod_2015_2016_final) %>% 
  filter(`Ambient Temperature [ºC]` <1000)
summary(tabla_final) 
##     Datetime                   Ambient Temperature [ºC]
##  Min.   :2015-01-01 00:00:00   Min.   :-1.500e+09      
##  1st Qu.:2015-05-26 11:06:30   1st Qu.: 1.400e+01      
##  Median :2015-10-18 23:12:00   Median : 1.800e+01      
##  Mean   :2015-11-27 03:00:27   Mean   :-5.358e+03      
##  3rd Qu.:2016-05-17 18:32:30   3rd Qu.: 2.300e+01      
##  Max.   :2016-12-31 23:00:00   Max.   : 3.800e+01      
##                                                        
##  Diffuse Radiation [W/m2] Ultraviolet [W/m2] Global Radiation [W/m2]
##  Min.   :  1.6            Min.   : 0.4954    Min.   :   0.7285      
##  1st Qu.:  1.7            1st Qu.: 0.5106    1st Qu.:   1.5693      
##  Median : 16.5            Median : 1.5008    Median :  13.0063      
##  Mean   : 68.2            Mean   :14.5440    Mean   : 237.1203      
##  3rd Qu.:103.7            3rd Qu.:26.0017    3rd Qu.: 452.7272      
##  Max.   :720.4            Max.   :84.2660    Max.   :1421.3282      
##  NA's   :399744                                                     
##  A_Optimal - Power DC [W] B_Optimal - Power DC [W]
##  Min.   :  0.0            Min.   :  0.0           
##  1st Qu.: 29.8            1st Qu.: 26.1           
##  Median : 97.8            Median : 94.9           
##  Mean   : 99.4            Mean   : 98.7           
##  3rd Qu.:163.1            3rd Qu.:169.3           
##  Max.   :307.6            Max.   :302.0           
##  NA's   :479354           NA's   :477901
write_csv(tabla_final, "meteo_prod_2015_2016.csv")

Preparar datos de test

Importaciones

test_meteo_2017 <- read_csv("test-sunlab-meteo-2017.csv")
test_prod_2017 <- read_csv("test-sunlab-pv-2017.csv")

Cruzamos las tablas por Datetime

tabla_final_test <- test_meteo_2017 %>%
              left_join(test_prod_2017, by = "Datetime") %>%
                        select(`A_Optimal - Power DC [W]`, 
                               `Global Radiation [W/m2]`,
                               `Ultraviolet [W/m2]`)
write_csv(tabla_final_test, "test_meteo_prod_2017.csv")

Echamos un vistazo a la completitud de los datos

aggr(tabla_final)

Panel A

tabla_final_A <- tabla_final %>% 
                select(-`B_Optimal - Power DC [W]`) %>%
                na.omit()



modelo_A_1=lm(`A_Optimal - Power DC [W]` ~ `Global Radiation [W/m2]` + `Ultraviolet [W/m2]` , data =  tabla_final_A)

Echamos un vistazo al modelo

modelo_A_1
## 
## Call:
## lm(formula = `A_Optimal - Power DC [W]` ~ `Global Radiation [W/m2]` + 
##     `Ultraviolet [W/m2]`, data = tabla_final_A)
## 
## Coefficients:
##               (Intercept)  `Global Radiation [W/m2]`  
##                    4.8996                     0.2692  
##      `Ultraviolet [W/m2]`  
##                   -0.9980
summary(modelo_A_1)
## 
## Call:
## lm(formula = `A_Optimal - Power DC [W]` ~ `Global Radiation [W/m2]` + 
##     `Ultraviolet [W/m2]`, data = tabla_final_A)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -217.181  -18.974   -5.129   13.335  228.712 
## 
## Coefficients:
##                            Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                4.899607   0.115663   42.36   <2e-16 ***
## `Global Radiation [W/m2]`  0.269219   0.001342  200.54   <2e-16 ***
## `Ultraviolet [W/m2]`      -0.997968   0.022165  -45.02   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 30.48 on 221114 degrees of freedom
## Multiple R-squared:  0.8266, Adjusted R-squared:  0.8266 
## F-statistic: 5.269e+05 on 2 and 221114 DF,  p-value: < 2.2e-16
fitted_values <- modelo_A_1$fitted.values
real_values <- tabla_final_A$`A_Optimal - Power DC [W]`
tabla_final_test_A <- tabla_final_test %>%
                        select(`A_Optimal - Power DC [W]`, 
                               `Global Radiation [W/m2]`,
                               `Ultraviolet [W/m2]`)

Hacemos la prediccion para los paneles A

prediccion_test <- predict(modelo_A_1, tabla_final_test_A)
prediccion_test <- as.data.frame(prediccion_test)
write_csv(prediccion_test, "predicciones_panel_A.csv")
tabla_test_predicciones_A <- bind_cols(tabla_final_test_A, prediccion_test) %>%
          na.omit()
tabla_test_predicciones_A_1 <- tabla_test_predicciones_A %>%
                              mutate(diff = abs(`A_Optimal - Power DC [W]` - prediccion_test))
mean(tabla_test_predicciones_A_1$diff, na.rm = TRUE)
## [1] NaN