## REGRESIÓN
# GRUPO 3
# Carga de datos

setwd("/cloud/project/PROYECTO/DATOS")
datos<-read.csv("petro.csv",
                header= TRUE, sep= ",", dec=".")

# Extraer variables
elevacion<-datos$GROUND_ELEVATION
profundidad<-datos$TOTAL_DEPTH
latitud<-datos$SURFACE_LATITUDE_83
latitud<-na.omit(latitud)
longitud<-datos$SURFACE_LONGITUDE_83
longitud<-na.omit(longitud)
precision<-datos$LOCATION_ACCURACY
precision<-gsub("[^0-9,.]", "", precision)
precision<-as.numeric(gsub(",", "", precision))
verticalidad<-datos$TRUE_VERTICAL_DEPTH

library(scatterplot3d)

## REGRESIÓN LINEAL: Profundidad y verticalidad

# Cargar variables
y<-profundidad
x<-verticalidad

# Modelo de regresión
regresionlineal<-lm(y~x)
summary(regresionlineal)
## 
## Call:
## lm(formula = y ~ x)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
##  -85.4  -11.4   -3.4    1.7 4113.7 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -8.744085   1.063571  -8.221   <2e-16 ***
## x            1.043946   0.002456 425.132   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 94.38 on 24372 degrees of freedom
##   (2292 observations deleted due to missingness)
## Multiple R-squared:  0.8812, Adjusted R-squared:  0.8812 
## F-statistic: 1.807e+05 on 1 and 24372 DF,  p-value: < 2.2e-16
## Gráfica de regresión
plot(x,y, col=4,pch=7,main = "Gráfica: Regresión Lineal",
     xlab = "Verticalidad(m)", ylab = "Profundidad (m)")

# Agregar recta de regresión
abline(regresionlineal, col="red")

# Test de bondad
r<-cor(x,y,use = "pairwise.complete.obs")
r2<-r^2*100
r2
## [1] 88.11753
#Ecuación y=β0+β1x, donde y=Profundidad y x=Verticalidad 
#y=−8.744085+1.043946*x
#Aplicación del Modelo: Si x (Verticalidad) es 1000 m, y=?
x<-1000
y <- (1.043946 * x) - 8.744085
y
## [1] 1035.202
## CONCLUSIÓN
# La verticalidad y la profundidad de los pozos petroleros en Ontario, Canadá 
# existe una relación de tipo lineal cuya ecuación matemática es:
# y=−8.744085+1.043946*x 
# siendo “y” la profundidad y “x” la verticalidad de los pozos petroleros en Ontario.
# Podemos decir que la verticalidad está influenciada en un 88.12% por la profundidad del pozo, y el 11.88% restante se debe a otros factores.
# Por ejemplo, cuando la elevación del terreno es 1000 (m) se espera 42.39233 (m)
# de latitud en el pozo.

## REGRESIÓN POLINÓMICA: Elevación y Latitud

# Cargar variables
x<-elevacion
y<-latitud
xcuad<-x^2
xcub<-x^3
xcta<-x^4

# Modelo de regresión
regresionPolinomica<-lm(y~x+xcuad+xcub+xcta)
summary(regresionPolinomica)
## 
## Call:
## lm(formula = y ~ x + xcuad + xcub + xcta)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -11.9831  -0.1604   0.0202   0.1440   9.5174 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  5.521e+01  9.756e-02  565.97   <2e-16 ***
## x           -1.708e-01  1.695e-03 -100.76   <2e-16 ***
## xcuad        8.025e-04  1.068e-05   75.14   <2e-16 ***
## xcub        -1.490e-06  2.729e-08  -54.60   <2e-16 ***
## xcta         9.449e-10  2.343e-11   40.34   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.5808 on 24625 degrees of freedom
##   (2036 observations deleted due to missingness)
## Multiple R-squared:  0.4483, Adjusted R-squared:  0.4482 
## F-statistic:  5002 on 4 and 24625 DF,  p-value: < 2.2e-16
# Coeficientes
beta0<-regresionPolinomica$coefficients[1]
beta1<-regresionPolinomica$coefficients[2]
beta2<-regresionPolinomica$coefficients[3]
beta3<-regresionPolinomica$coefficients[4]
beta4<-regresionPolinomica$coefficients[5]
a<-beta0
b<-beta1
c<-beta2
d<-beta3
e<-beta4

# Gráfica
plot(x,y,col=5,pch=7,
     main = "Gráfica: Regresión polinómica",
     xlab = "Elevación (m)", 
     ylab = "Latitud (m)",
     xlim = c(0,694),
     ylim = c(40,58.50056944))

# Agregar curva de regresión
curve(a+(b*x)+(c*x^2)+(d*x^3)+(e*x^4),add=T,col="red")

# Test de bondad
r<-cor(elevacion,latitud,use = "pairwise.complete.obs")
r2<-r^2*100

#Ecuación y=a+(b*x)+(c*x^2)+(d*x^3)+(e*x^4), donde y=Latitud y x=Elevación 
#y=5.521e+01+(-1.708e-01*x)+(8.025e-04*x^2)+(-1.490e-06*x^3)+(9.449e-10*x^4)
#Aplicación del Modelo: Si x (Elevación) es 570 m, y=?
x<-570
y=5.521e+01+(-1.708e-01*x)+(8.025e-04*x^2)+(-1.490e-06*x^3)+(9.449e-10*x^4)
y
## [1] 42.39233
## Conclusión
#La elevación del terreno y la latitud de los pozos petroleros en Ontario, Canadá 
#existe una relación de tipo polinómica cuya ecuación matemática es:
#y=5.521e+01+(-1.708e-01*x)+(8.025e-04*x^2)+(-1.490e-06*x^3)+(9.449e-10*x^4) 
#siendo “y” la latitud de los pozos petroleros en Ontario y “x” la elevación del 
#terreno. Por ejemplo, cuando la elevación del terreno es 570 (m) se espera 
#42.39233 (m) de latitud en el pozo.

## REGRESIÓN POTENCIAL: Profundidad y Latitud

# Cargar las variables
x<-profundidad
y<-latitud
x1<-log(x)
y1<-log(y)

# Modelo de regresión potencial
regresionPotencial<-lm(y1~x1)
summary(regresionPotencial)
## 
## Call:
## lm(formula = y1 ~ x1)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.03627 -0.00589 -0.00071  0.00055  0.32028 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  3.7961416  0.0009077 4182.05   <2e-16 ***
## x1          -0.0066853  0.0001595  -41.91   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.01843 on 24498 degrees of freedom
##   (2166 observations deleted due to missingness)
## Multiple R-squared:  0.06691,    Adjusted R-squared:  0.06688 
## F-statistic:  1757 on 1 and 24498 DF,  p-value: < 2.2e-16
# Coeficientes
beta0<-regresionPotencial$coefficients[1]
beta1<-regresionPotencial$coefficients[2]
b<-beta1
a<-exp(beta0)

# Gráfica
plot(x,y,col=5,pch=7,main = "Regresión potencial",
     xlab = "Profundidad (m)", ylab = "Latitud (m)",ylim = c(40,48))

# Agregar curva de regresión
curve(a*x^b,from = 0,to=5000,add=T,col="red")

# Test de bondad
r<-cor(x1,y1,use = "pairwise.complete.obs")
r2<-r^2*100

#Ecuación y=a*x^b, donde x=Profundidad y y=Latitud
#y=44.5262*x^-0.0066853
#Aplicación del Modelo: Si x (Profundidad) es 3850 m, y=?
x1<-3850
y=44.5262*x1^-0.0066853
y
## [1] 42.13527
## Conclusión
#La profundidad y la latitud de los pozos petroleros en Ontario, Canadá 
#existe una relación de tipo potencial cuya ecuación matemática es:
#y=44.5262*x^-0.0066853
#siendo “y” la latitud de los pozos petroleros en Ontario y “x” la profundidad  
#del mismo. Por ejemplo, cuando la profundidad es 3850 (m) se espera 
#42.13527 (m) de latitud en el pozo.


## REGRESIÓN MÚLTIPLE: Profundidad vs. Verticalidad y Latitud

# Carga las variables
y<-profundidad
x1<-verticalidad
x2<-latitud

# Modelo de regresión 
regresionMultiple <- lm(y ~ x1 + x2)
summary(regresionMultiple)
## 
## Call:
## lm(formula = y ~ x1 + x2)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
##  -84.8  -12.4   -3.6    1.3 4112.1 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 149.682057  30.121284   4.969 6.76e-07 ***
## x1            1.041661   0.002492 417.949  < 2e-16 ***
## x2           -3.674899   0.698267  -5.263 1.43e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 94.33 on 24371 degrees of freedom
##   (2292 observations deleted due to missingness)
## Multiple R-squared:  0.8813, Adjusted R-squared:  0.8813 
## F-statistic: 9.048e+04 on 2 and 24371 DF,  p-value: < 2.2e-16
#Crear el dataframe ajustado
datosMultiple<-data.frame(y,x1,x2)

# Gráfica de resultados
profundidadReg<-scatterplot3d(x1,x2,y,
                              main="Gráfica No.1: Regresión Múltiple",
                              xlab="Verticalidad (m)", 
                              ylab="Latitud (m)",
                              zlab="Profundidad (m)",angle=225,
                              color="skyblue",
                              cex.axis = 0.4)
profundidadReg$plane3d(regresionMultiple,col="red")

# Test de bondad 
r<-cor(datosMultiple,use="complete.obs")
r2 <- r^2*100

#Ecuación y=β0+β1x1+β2x2, donde y=Profundidad , x1=Verticalidad y x2=Latitud
#y<-149.682057 +1.041661*x1 + -3.674899*x2
#Aplicación del Modelo: Si X1 (Verticalidad) es 2000 m y X2 (Latitud) es 51 m 
x1<-2000
x2<-51
y<-149.682057 +1.041661*x1 + -3.674899*x2
y
## [1] 2045.584
## Conclusión
#La profundidad, verticalidad y latitud de los pozos petroleros en Ontario, Canadá 
#existe una relación cuya ecuación matemática es:
#y<-149.682057 +1.041661*x1 + -3.674899*x2
#siendo "y" la profundidad de los pozos petroleros en Ontario, "x" la latitud 
#y "z" la verticalidad. Por ejemplo, cuando la latitud es 51 (m) y la verticalidad 
#es 2000 (m) se espera 2045.584 (m) de profundidad en el pozo.