#TEMA:Variable Cuantitativa Continua
#FECHA: 28/05/2024
#NOMBRE: Dayana Gutama, Damarys Patiño, Antonia Rivera, Valentina Vaca

#VARIABLE CONTINUA
install.packages('rmarkdown')
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.4'
## (as 'lib' is unspecified)
library(rmarkdown)
#----Extracción de Datos----
library(readxl)
datos <- read_excel("Litogeoquímica_Peru (2).xlsx")
no_numeric <- datos$Cu[!grepl("^[0-9.]+$", datos$Cu)]
datos$Cu <- as.numeric(datos$Cu)
## Warning: NAs introduced by coercion
datos <- datos[!is.na(datos$Cu), ]
Variable <- datos$Cu

#----TDF Cualitativa Continua----
TdF = function(Variable)
{
  t = length(Variable)
  y.min = min(Variable)
  y.max = max(Variable)
  num.dec = rep(0,t)
  for (i in 1:t)
  {
    if ((Variable[i] %% 1) != 0)
      num.dec[i]=nchar(strsplit(sub('0+$','',as.character(Variable[i])),".",
                                fixed=TRUE)[[1]][[2]])
    else
      num.dec[i] = 0
  }
  num.dec = max(num.dec)
  R = y.max-y.min
  k = round(1+log(t,2),0)
  A = R/k
  residuo = 10^(num.dec+1)*A-floor(10^(num.dec+1)*A)
  if (residuo<1e-10) residuo = 0
  if (residuo!=0) A = A-residuo/(10*(num.dec+1))+1/(10*(num.dec+1))
  else A = A-residuo/(10*(num.dec+1))
  exceso = k*A-R
  Li_E = round(rep(0,k),2)
  Ls_E = round(rep(0,k),2)
  MC_E = round(rep(0,k),2)
  ni_E = rep(0,k)
  Ni_asc_E = rep(0,k)
  Ni_dsc_E = rep(0,k)
  Li_E[1] = y.min-exceso/2
  for (i in 1:k)
  {
    if (i!=k) Ls_E[i] = Li_E[1]+i*A
    else Ls_E[i] = y.max+exceso/2
    for (j in 1:t)
    {
      if (i!=k & Li_E[i]<=Variable[j] & Variable[j]<Ls_E[i]) ni_E[i] = ni_E[i]+1
      if (i==k & Li_E[i]<=Variable[j] & Variable[j]<=Ls_E[i]) ni_E[i] = ni_E[i]+1
    }
    if (i!=k) Li_E[(i+1)] = Ls_E[i]
    for (j in 1:i) Ni_asc_E[i] = Ni_asc_E[i]+ni_E[j]
    MC_E[i] = (Li_E[i]+Ls_E[i])/2
  }
  Ni_dsc_E[k] = ni_E[k]
  for (i in (k-1):1) {
    Ni_dsc_E[i] = Ni_dsc_E[i+1] + ni_E[i]
  }
  hi_E = round(ni_E/t,4)*100
  Hi_asc_E = round(Ni_asc_E/t,4)*100
  Hi_dsc_E = round(Ni_dsc_E/t,4)*100
  result = data.frame(Li_E,Ls_E,MC_E,ni_E,hi_E,Ni_asc_E,Ni_dsc_E,Hi_asc_E,Hi_dsc_E)
  return(result)
}
TdF(Variable)
##     Li_E  Ls_E  MC_E ni_E  hi_E Ni_asc_E Ni_dsc_E Hi_asc_E Hi_dsc_E
## 1    1.0  13.4   7.2   93 25.48       93      365    25.48   100.00
## 2   13.4  25.8  19.6   89 24.38      182      272    49.86    74.52
## 3   25.8  38.2  32.0   55 15.07      237      183    64.93    50.14
## 4   38.2  50.6  44.4   34  9.32      271      128    74.25    35.07
## 5   50.6  63.0  56.8   37 10.14      308       94    84.38    25.75
## 6   63.0  75.4  69.2   20  5.48      328       57    89.86    15.62
## 7   75.4  87.8  81.6   18  4.93      346       37    94.79    10.14
## 8   87.8 100.2  94.0    9  2.47      355       19    97.26     5.21
## 9  100.2 112.6 106.4    4  1.10      359       10    98.36     2.74
## 10 112.6 125.0 118.8    6  1.64      365        6   100.00     1.64
#----TDF Cualitativa Continua Simplificada----
#tabla de frec absolutas
HistogramaElev<- hist(Variable,breaks=7)

k <- length(HistogramaElev$breaks)-1

Li <- HistogramaElev$breaks[1:7]
Ls <- HistogramaElev$breaks[2:8]
MC <- HistogramaElev$mids
ni <- HistogramaElev$counts
hi <- round((ni/sum(ni))*100,2)

#tabla de freq acumuladas
Ni_asc <- cumsum(ni)
Ni_dsc <- rev(cumsum(rev(ni)))
Hi_asc <- cumsum(hi)
Hi_dsc <- rev(cumsum(rev(hi)))

(TDFelevacion<- data.frame(Li,Ls,MC,ni,hi,Ni_asc,Ni_dsc,Hi_asc,Hi_dsc))
##    Li  Ls  MC  ni    hi Ni_asc Ni_dsc Hi_asc Hi_dsc
## 1   0  20  10 141 38.63    141    365  38.63 100.00
## 2  20  40  30 108 29.59    249    224  68.22  61.37
## 3  40  60  50  53 14.52    302    116  82.74  31.78
## 4  60  80  70  33  9.04    335     63  91.78  17.26
## 5  80 100  90  20  5.48    355     30  97.26   8.22
## 6 100 120 110   9  2.47    364     10  99.73   2.74
## 7 120 140 130   1  0.27    365      1 100.00   0.27
#----Gráficas----
#Histogramas Frecuencia Acumuladas
barplot(ni,space = 0,main = "Grafica N°1:Distribucción de la Concetracion de Cobre en ppm de las Muestras Obtenidas en la zona oeste de Perú",
        col = "skyblue",xlab = "Concentración de Cobre (ppm)",ylab = "Cantidad",
        ylim=c(0,max(ni)),names.arg=round(MC,2), axis.lty=1, cex.main=0.7)

#Total
barplot(ni,space = 0,main = "Grafica N°2:Distribucción de la Concetracion de Cobre en ppm de las Muestras Obtenidas en la zona oeste de Perú",
        col = "skyblue",xlab = "Concentración de Cobre (ppm)",ylab = "Cantidad",
        ylim=c(0,length(Variable)),names.arg=round(MC,2), axis.lty=1, cex.main=0.7)

#Histogramas Frecuencia Absoluta
barplot(hi,space = 0,main = "Grafica N°3:Distribucción de la Concetracion de Cobre en ppm de las Muestras Obtenidas en la zona oeste de Perú",
        col = "skyblue",xlab = "Concentración de Cobre (ppm)",ylab = "Porcentaje",
        names.arg=round(MC,2), axis.lty=1,ylim = c(0,max(hi)),cex.main=0.7)

#Total
barplot(hi,space = 0,main = "Grafica N°4:Distribucción de la Concetracion de Cobre en ppm de las Muestras Obtenidas en la zona oeste de Perú",
        col = "skyblue",xlab = "Concentración de Cobre (ppm)",ylab = "Porcentaje",
        names.arg=round(MC,2), axis.lty=1,ylim = c(0,100),cex.main=0.7)

#Diagrama de Caja
caja<-boxplot(Variable, horizontal = TRUE, main = "Grafica N°5:Diagrama de Caja", 
              xlab="Concentración de Cobre (ppm)", col="skyblue",cex.main=0.7)

(round(summary(Variable),2)) 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    1.00   12.00   26.00   34.37   51.00  125.00
#Ojivas
plot(Li, Hi_dsc, type ="b", main ="Grafica N°6:Ojiva de Frecuencias Relativas Acumuladas Ascendete y Descendente",
     ylab="Porcentaje %",xlab="Concentración de Cobre (ppm)",cex.main=0.7)
lines(Ls, Hi_asc, type = "b", col="skyblue")



#----Obtención de Indicadores Estadisticos----

library(PASWR)
## Loading required package: lattice

library(psych)
Indicadores<-c("n", "Minimo", "Maximo","k intervalos", "Amplitud","Media", 
               "Mediana", "Desviacion Estandar", "Varianza",  "Coef. de variación (%)",
               "Curtosis","Coef. de Asimetría")

Valores1<-c(length(Variable),min(Variable),max(Variable),k, 
            (max(Variable)-min(Variable))/k,mean(Variable),median(Variable),sd(Variable),
            var(Variable),round((sd(Variable)/mean(Variable))*100,2),kurtosi(Variable),
            skew(Variable))
Valores <- round(Valores1,2)
Estadisticas<- data.frame(Indicadores,Valores)
Estadisticas
##               Indicadores Valores
## 1                       n  365.00
## 2                  Minimo    1.00
## 3                  Maximo  125.00
## 4            k intervalos    7.00
## 5                Amplitud   17.71
## 6                   Media   34.37
## 7                 Mediana   26.00
## 8     Desviacion Estandar   27.45
## 9                Varianza  753.32
## 10 Coef. de variación (%)   79.85
## 11               Curtosis    0.50
## 12     Coef. de Asimetría    1.04
(outliers <- sort(caja$out))
## [1] 109.92 112.00 114.00 114.00 117.00 119.00 119.00 125.00
#CONCLUSIÓN
# La concentración de Cu tiene un comportamiento donde su valor mínimo es de 1 y su valor
# máximo es de 125 es un conjunto heterogeneo donde los valores se encuntran agrupados en su 
# mayoria en la parte inferior izquierda del
# histograma, formando una curva leptocurtica, asimétrica positiva, con precencia de valores atipicos
# por lo tanto el comportamiento es medianamente beneficiosa

######################################### ETAPA2 ###################################################


Cu<- datos$Cu
CU<- na.omit(as.numeric(Cu))
hist(CU, breaks = 7, freq=FALSE, las=1)

summary(CU)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    1.00   12.00   26.00   34.37   51.00  125.00
#Ajuste
installed.packages('MASS')
##      Package LibPath Version Priority Depends Imports LinkingTo Suggests
##      Enhances License License_is_FOSS License_restricts_use OS_type Archs
##      MD5sum NeedsCompilation Built
require(MASS)
## Loading required package: MASS
ajustelognormal<-fitdistr(CU, "lognormal")
ajustelognormal
##     meanlog       sdlog   
##   3.13478726   1.02374509 
##  (0.05358527) (0.03789051)
x <- seq(min(CU),max(CU), by =0.001)


hv<- hist(CU, breaks = 7,  freq =FALSE, xlab="Cu", ylab="Gráfica Nº 7. Densidad de Probabilidad",las =1, main = "Diagrama de distribución de densidad del Cu",
          ylim= c(0,0.02), col="skyblue",cex.main=0.7)
curve(dlnorm(x,mean=ajustelognormal$estimate[1], sd=ajustelognormal$estimate[2]), ylim= c(0,1),col="red", add= TRUE)

#PRUEBAS DE AJUSTE
FO <- hv$counts
FO
## [1] 141 108  53  33  20   9   1
FE<-c()

for (i in 1:7){
  P <- plnorm(hv$breaks[i+1],mean=ajustelognormal$estimate[1] , sd=ajustelognormal$estimate[2])-plnorm(hv$breaks[i],mean=ajustelognormal$estimate[1],sd=ajustelognormal$estimate[2])
  FE[i] <- P*length(CU)
}
FO
## [1] 141 108  53  33  20   9   1
FE
## [1] 162.781954  94.845649  43.752213  22.903337  13.173372   8.116905   5.269537
cor(FE,FO)
## [1] 0.9815994
##Con esta formula calculamos el chi, solo valores positivos de eje horizontal
x2 <- sum(((FO-FE)^2)/FE)
x2
## [1] 18.23778
#Valor critico
Vc<-qchisq(0.99, 10)#nivel de confianza (no riesgo), grados de libertad
Vc
## [1] 23.20925
x2>Vc
## [1] FALSE
#CONCLUSIÓN
#El comportamiento de la variable continua Cu se representa a traves de un modelo
# Lognormal con pararametros mean= 3,13 y sd 1.023 donde podemos afirmar 
# que la media aritmÈtica se encuentra en el intervalo: [1;13.4] y con una desviaciÛn estandar
#igual a 27.56