library(readr)
# install.packages("corrplot") # Nuevo
library(corrplot) # Para correlación
## corrplot 0.84 loaded
library(caret)  # Para dividir conjunto de datos
## Loading required package: lattice
## Loading required package: ggplot2
# install.packages("MASS") # NUEVO
library(MASS)
#Datos
oxidoNit <- c(0.90, 0.91, 0.96, 0.89, 1.00, 1.10, 1.15, 1.03, 0.77, 1.07, 1.07, 0.94, 1.10, 1.10, 1.10, 0.91, 0.87, 0.78, 0.82, 0.95)
humedad <- c(72.4, 41.6, 34.3, 35.1, 10.7, 12.9, 8.3, 20.1, 72.2, 24.0, 23.2, 47.4, 31.5, 10.6, 11.2, 73.3, 75.4, 96.6, 107.4, 54.9)
temperatura <- c(76.3, 70.3, 77.1, 68.0, 79.0, 67.4, 66.8, 76.9, 77.7, 67.7, 76.8, 86.6, 76.9, 86.3, 86.0, 76.3, 77.9, 78.7, 86.8, 70.9)
presion <- c(29.18, 29.35, 29.24, 29.27, 29.78, 29.39, 29.69, 29.48, 29.09, 29.60, 29.38, 29.35, 29.63, 29.56, 29.48, 29.40, 29.28, 29.29, 29.03, 29.37)

#datos <- data.frame(oxidoNit, humedad, temperatura, presion)
#datos
length(oxidoNit)
## [1] 20
length(temperatura)
## [1] 20
length(humedad)
## [1] 20
length(presion)
## [1] 20
datos <- data.frame(oxidoNit, humedad, temperatura, presion)
datos
##    oxidoNit humedad temperatura presion
## 1      0.90    72.4        76.3   29.18
## 2      0.91    41.6        70.3   29.35
## 3      0.96    34.3        77.1   29.24
## 4      0.89    35.1        68.0   29.27
## 5      1.00    10.7        79.0   29.78
## 6      1.10    12.9        67.4   29.39
## 7      1.15     8.3        66.8   29.69
## 8      1.03    20.1        76.9   29.48
## 9      0.77    72.2        77.7   29.09
## 10     1.07    24.0        67.7   29.60
## 11     1.07    23.2        76.8   29.38
## 12     0.94    47.4        86.6   29.35
## 13     1.10    31.5        76.9   29.63
## 14     1.10    10.6        86.3   29.56
## 15     1.10    11.2        86.0   29.48
## 16     0.91    73.3        76.3   29.40
## 17     0.87    75.4        77.9   29.28
## 18     0.78    96.6        78.7   29.29
## 19     0.82   107.4        86.8   29.03
## 20     0.95    54.9        70.9   29.37
summary(datos)
##     oxidoNit         humedad        temperatura       presion     
##  Min.   :0.7700   Min.   :  8.30   Min.   :66.80   Min.   :29.03  
##  1st Qu.:0.8975   1st Qu.: 18.30   1st Qu.:70.75   1st Qu.:29.28  
##  Median :0.9550   Median : 34.70   Median :76.90   Median :29.38  
##  Mean   :0.9710   Mean   : 43.16   Mean   :76.52   Mean   :29.39  
##  3rd Qu.:1.0775   3rd Qu.: 72.25   3rd Qu.:78.78   3rd Qu.:29.50  
##  Max.   :1.1500   Max.   :107.40   Max.   :86.80   Max.   :29.78
str(datos)
## 'data.frame':    20 obs. of  4 variables:
##  $ oxidoNit   : num  0.9 0.91 0.96 0.89 1 1.1 1.15 1.03 0.77 1.07 ...
##  $ humedad    : num  72.4 41.6 34.3 35.1 10.7 12.9 8.3 20.1 72.2 24 ...
##  $ temperatura: num  76.3 70.3 77.1 68 79 67.4 66.8 76.9 77.7 67.7 ...
##  $ presion    : num  29.2 29.4 29.2 29.3 29.8 ...
plot(datos)

#correlacion
cor(x=datos, method = "pearson")
##               oxidoNit    humedad temperatura    presion
## oxidoNit     1.0000000 -0.8773635  -0.1807651  0.7740084
## humedad     -0.8773635  1.0000000   0.2535071 -0.7554882
## temperatura -0.1807651  0.2535071   1.0000000 -0.1936361
## presion      0.7740084 -0.7554882  -0.1936361  1.0000000
pairs(x=datos, lower.panel = NULL)

corrplot(corr = cor(x=datos, method = "pearson"), method = "number")

modelo <- lm(oxidoNit ~ ., data = datos)
modelo
## 
## Call:
## lm(formula = oxidoNit ~ ., data = datos)
## 
## Coefficients:
## (Intercept)      humedad  temperatura      presion  
##  -3.5077781   -0.0026250    0.0007989    0.1541550
h = 50
t = 76
p = 29.30
nuevodato <- data.frame(humedad = h, temperatura = t, presion = p)
nuevodato
##   humedad temperatura presion
## 1      50          76    29.3
y.predict <- predict(modelo, nuevodato)
y.predict
##         1 
## 0.9384342
y.predict <- predict(modelo, nuevodato, interval = "confidence")
y.predict
##         fit       lwr       upr
## 1 0.9384342 0.9080547 0.9688137
y.predict <- predict(modelo, nuevodato, interval = "predict")
y.predict
##         fit       lwr      upr
## 1 0.9384342 0.8155473 1.061321
y.predict.2 <- modelo$coefficients[1] + modelo$coefficients[2] * h + modelo$coefficients[3] * t + modelo$coefficients[4] * p  
y.predict.2
## (Intercept) 
##   0.9384342
summary(modelo)
## 
## Call:
## lm(formula = oxidoNit ~ ., data = datos)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.11799 -0.02526  0.01345  0.04103  0.06523 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)   
## (Intercept) -3.5077781  3.0048641  -1.167  0.26017   
## humedad     -0.0026250  0.0006549  -4.008  0.00101 **
## temperatura  0.0007989  0.0020451   0.391  0.70121   
## presion      0.1541550  0.1013675   1.521  0.14784   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.05617 on 16 degrees of freedom
## Multiple R-squared:  0.8005, Adjusted R-squared:  0.763 
## F-statistic:  21.4 on 3 and 16 DF,  p-value: 7.609e-06

#Interpretación: El oxido nitroso varia según la humedad, temperatura y presión. La humedad la que más influye Pr(>|t|) igual a 0.00101 **. Cada predicción estimada de óxido nitroso tiene 0.05617 de margen de error, por lo que se puede hacer una predicción del promedio del óxido nitroso con un nivel alto de confianza entre (0.9080547 - 0.9688137).