Taller R LPAQ - Ana María Montaño

1. Descarga de datos:

Número de tabla descargada: 5

library(readxl)
datos1 <- read_excel("D:/Documents/Tabla1.xlsx")
## New names:
## * `` -> ...1
View(datos1)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
protocoloVA <- filter(datos1, `clase bureta` == 'A', `volumen alicuota` == 5, `clase pipeta` == "A")
protocoloVB <- filter(datos1, `clase bureta` == "B", `volumen alicuota` == 10, `clase pipeta`== "B" )
protocoloVC <- filter(datos1, `clase bureta`== "A", `volumen alicuota`== 10, `clase pipeta`== "A")
protocoloGA <- filter(datos1, `volumen alicuota`== 5, `clase pipeta`== "A",`balanza calcinado`== "ME204")
protocoloGB <- filter(datos1, `volumen alicuota`== 10,`clase pipeta`== "B",`balanza calcinado`== "ME204")
protocoloGC <- filter(datos1,`volumen alicuota`== 10,`clase pipeta`== "A",`balanza calcinado`== "ME204" )

Análisis Exploratorio

Protocolo VA - Protocolo VB - Protocolo VC

volumenesVA <- unlist(select(protocoloVA, `volumen EDTA`))
volumenesVA <- as.numeric(volumenesVA)
par(mfrow = c(3,2))
boxplot(volumenesVA, main = "boxplot de volumenes VA")
hist(volumenesVA)
volumenesVB <- unlist(select(protocoloVB, `volumen EDTA`))
volumenesVB <- as.numeric(volumenesVB)
boxplot(volumenesVB, main = "boxplot de volumenes VB")
hist(volumenesVB)
volumenesVC <- unlist(select(protocoloVC, `volumen EDTA`))
volumenesVC <- as.numeric(volumenesVC)
boxplot(volumenesVC, main = "boxplot de volumenes VC")
hist(volumenesVC)

Protocolo GA - Protocolo GB - Protocolo GC

masasGA <- unlist(select(protocoloGA, `masas finales`))
masasGA <- as.numeric(masasGA)
par(mfrow = c(3,2))
boxplot(masasGA, main = "boxplot de masas GA")
hist(masasGA)
masasGB <- unlist(select(protocoloGB, `masas finales`))
masasGB <- as.numeric(masasGB)
boxplot(masasGB, main = "boxplot de masas GB")
hist(masasGB)
masasGC <- unlist(select(protocoloGC, `masas finales`))
masasGC <- as.numeric(masasGC)
boxplot(masasGC, main = "boxplot de masas GC")
hist(masasGC)

Datos atípicos:

protocoloGD <- read_excel("D:/Documents/Tabla2.xlsx")
## New names:
## * `` -> ...1
masasGD <- unlist(select(protocoloGD, `masas finales`))
masasGD <- as.numeric(masasGD)
par(mfrow = c(1,2))
summary(masasGD)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.04350 0.04920 0.05660 0.05348 0.05740 0.06070
cuartiles <- quantile(masasGD)
cuartiles
##     0%    25%    50%    75%   100% 
## 0.0435 0.0492 0.0566 0.0574 0.0607
IQR <- cuartiles[4]-cuartiles[2]
critico.inferior<- cuartiles[2]-(1.5*IQR)
which(masasGD < critico.inferior)
## integer(0)

No hay datos atípicos

Protocolo GD

protocoloGD <- read_excel("D:/Documents/Tabla2.xlsx")
## New names:
## * `` -> ...1
masasGD <- unlist(select(protocoloGD, `masas finales`))
masasGD <- as.numeric(masasGD)
par(mfrow = c(1,2))
boxplot(masasGD, main = "boxplot de masas GD")
hist(masasGD)

CÁLCULO DE PROMEDIOS Y DESVIACIONES ESTÁNDAR

VOLUMETRÍAS

# protocolo VA
volumenesVA1 <- filter(protocoloVA, replicas ==1) %>% select(`volumen EDTA`)%>% unlist()
volumenesVA2 <- filter(protocoloVA, replicas ==2) %>% select(`volumen EDTA`)%>% unlist()
volumenesVA3 <- filter(protocoloVA, replicas ==3) %>% select(`volumen EDTA`)%>% unlist()
volumenesVA1 <- as.numeric(volumenesVA1)
volumenesVA2 <- as.numeric(volumenesVA2)
volumenesVA3 <- as.numeric(volumenesVA3)

volumenesVA.promedio = (volumenesVA1 + volumenesVA2 + volumenesVA3)/3
sd.volumenVA <- vector('numeric',5) 
for(i in 1:5){
  
  sd.volumenVA[i] <- sd(c(volumenesVA1[i],volumenesVA2[i],volumenesVA3[i]))
}
volumenesVA.promedio <- as.data.frame(volumenesVA.promedio)
volumenesVA.promedio
##   volumenesVA.promedio
## 1             10.23000
## 2             10.10333
## 3             10.27000
## 4             10.24333
## 5             10.05667
# sd.volumen
# volumenes.promedio$sd.replicas <- sd.volumen
# Protocoloo VB
volumenesVB1 <- filter(protocoloVB, replicas ==1) %>% select(`volumen EDTA`)%>% unlist()
volumenesVB2 <- filter(protocoloVB, replicas ==2) %>% select(`volumen EDTA`)%>% unlist()
volumenesVB3 <- filter(protocoloVB, replicas ==3) %>% select(`volumen EDTA`)%>% unlist()
volumenesVB1 <- as.numeric(volumenesVB1)
volumenesVB2 <- as.numeric(volumenesVB2)
volumenesVB3 <- as.numeric(volumenesVB3)

volumenesVB.promedio = (volumenesVB1 + volumenesVB2 + volumenesVB3)/3
sd.volumenVB <- vector('numeric',5) 
for(i in 1:5){
  
  sd.volumenVB[i] <- sd(c(volumenesVB1[i],volumenesVB2[i],volumenesVB3[i]))
}
volumenesVB.promedio <- as.data.frame(volumenesVB.promedio)
volumenesVB.promedio
##   volumenesVB.promedio
## 1             10.10333
## 2             10.10333
## 3             10.08000
## 4             10.14667
## 5             10.21000
# sd.volumen
# volumenes.promedio$sd.replicas <- sd.volumen
# Protocolo VC
volumenesVC1 <- filter(protocoloVC, replicas ==1) %>% select(`volumen EDTA`)%>% unlist()
volumenesVC2 <- filter(protocoloVC, replicas ==2) %>% select(`volumen EDTA`)%>% unlist()
volumenesVC3 <- filter(protocoloVC, replicas ==3) %>% select(`volumen EDTA`)%>% unlist()
volumenesVC1 <- as.numeric(volumenesVC1)
volumenesVC2 <- as.numeric(volumenesVC2)
volumenesVC3 <- as.numeric(volumenesVC3)

volumenesVC.promedio = (volumenesVC1 + volumenesVC2 + volumenesVC3)/3
sd.volumenVC <- vector('numeric',5) 
for(i in 1:5){
  
  sd.volumenVC[i] <- sd(c(volumenesVC1[i],volumenesVC2[i],volumenesVC3[i]))
}
volumenesVC.promedio <- as.data.frame(volumenesVC.promedio)
volumenesVC.promedio
##   volumenesVC.promedio
## 1             10.37667
## 2             10.20000
## 3             10.21667
## 4             10.16333
## 5             10.25333
# sd.volumen
# volumenes.promedio$sd.replicas <- sd.volumen

Gravimetrías

# GA SE CALCINARON A 250 °. En forma de CaC2O4
 masasGA1 <- filter(protocoloGA, replicas ==1) %>% select( `masas finales`)%>% unlist()
 masasGA2 <- filter(protocoloGA, replicas ==2) %>% select( `masas finales`)%>% unlist()
 masasGA3 <- filter(protocoloGA, replicas ==3) %>% select( `masas finales`)%>% unlist()
masasGA1 <- as.numeric(masasGA1)
masasGA2 <- as.numeric(masasGA2)
masasGA3<- as.numeric(masasGA3)
masasGA.promedio.CaC2O4 <- (masasGA1+masasGA2+masasGA3)/3
sd.masaGA <- vector('numeric',5)
for(i in 1:5){
  
  sd.masaGA[i] <- sd(c(masasGA1[i],masasGA2[i],masasGA3[i]))
}
sd.masaGA
## [1] 1.000000e-04 0.000000e+00 5.773503e-05 0.000000e+00 5.773503e-05
# GB SE CALCINARON A 500 °. En forma de CaCO3
 masasGB1 <- filter(protocoloGB, replicas ==1) %>% select( `masas finales`)%>% unlist()
 masasGB2 <- filter(protocoloGB, replicas ==2) %>% select( `masas finales`)%>% unlist()
 masasGB3 <- filter(protocoloGB, replicas ==3) %>% select( `masas finales`)%>% unlist()
masasGB1 <- as.numeric(masasGB1)
masasGB2 <- as.numeric(masasGB2)
masasGB3<- as.numeric(masasGB3)
masasGB.promedio.CaCO3 <- (masasGB1+masasGB2+masasGB3)/3
sd.masaGB <- vector('numeric',5)
for(i in 1:5){
  
  sd.masaGB[i] <- sd(c(masasGB1[i],masasGB2[i],masasGB3[i]))
}
sd.masaGB
## [1] 5.773503e-05 5.773503e-05 5.773503e-05 0.000000e+00 5.773503e-05
# GC SE CALCINARON A 1000 °. En forma de CaO
 masasGC1 <- filter(protocoloGC, replicas ==1) %>% select( `masas finales`)%>% unlist()
 masasGC2 <- filter(protocoloGC, replicas ==2) %>% select( `masas finales`)%>% unlist()
 masasGC3 <- filter(protocoloGC, replicas ==3) %>% select( `masas finales`)%>% unlist()
masasGC1 <- as.numeric(masasGC1)
masasGC2 <- as.numeric(masasGC2)
masasGC3<- as.numeric(masasGC3)
masasGC.promedio.CaO <- (masasGC1+masasGC2+masasGC3)/3
sd.masaGC <- vector('numeric',5)
for(i in 1:5){
  
  sd.masaGC[i] <- sd(c(masasGC1[i],masasGC2[i],masasGC3[i]))
}
sd.masaGC
## [1] 5.773503e-05 1.527525e-04 0.000000e+00 1.000000e-04 5.773503e-05

INCERTIDUMBRE VOLUMETRIA

CaOH2_p.pVA <- function(FD_VA,
                      V_EDTA_VA,
                      W_CaOH2_VA,
                      C_EDTA_VA,
                      R_VA,
                      m_muestra_VA){
  
  (0.1*FD_VA*V_EDTA_VA*W_CaOH2_VA*C_EDTA_VA*R_VA)/(m_muestra_VA)
  
                      }
CaOH2_p.pVB <- function(FD_VB,
                      V_EDTA_VB,
                      W_CaOH2_VB,
                      C_EDTA_VB,
                      R_VB,
                      m_muestra_VB){
  
  (0.1*FD_VB*V_EDTA_VB*W_CaOH2_VB*C_EDTA_VB*R_VB)/(m_muestra_VB)
  
                      }
CaOH2_p.pVC <- function(FD_VC,
                      V_EDTA_VC,
                      W_CaOH2_VC,
                      C_EDTA_VC,
                      R_VC,
                      m_muestra_VC){
  
  (0.1*FD_VC*V_EDTA_VC*W_CaOH2_VC*C_EDTA_VC*R_VC)/(m_muestra_VC)
  
                      }

INCERTIDUMBRE PARA LA MASA MOLAR DE CaOH2

library(AtomicWeights)
W_CaOH2 <- getMolarMass(atomsType = c('Ca','O','H'),
                       c(1,1,2)
                       )
W_CaOH2
##         MM        u_MM
## 1 58.09335 0.004008732

Volumen de EDTA gastado en la valoración.

Para el método de la fenolftaleína la incertidumbre típica es 0,090 mL y relativa de 0,91 %.

U = R/2raíz de 3 = 0.05/2 raíz de 3 = 0,0144

Protocolo GA

volumenesVA.promedio$U.PF.Class[1:5] <- 0.05/2*sqrt(3)
volumenesVB.promedio$U.PF.Class[1:5] <- 0.05/2*sqrt(3)
volumenesVC.promedio$U.PF.Class[1:5] <- 0.05/2*sqrt(3)
library(uLPAQ)
## Loading required package: inflection
## Warning: package 'inflection' was built under R version 4.2.0
## Loading required package: nplr
## Warning: package 'nplr' was built under R version 4.2.0
## Loading required package: latex2exp
## Warning: package 'latex2exp' was built under R version 4.0.5
## Loading required package: Deriv
## Warning: package 'Deriv' was built under R version 4.0.5
U_buretasVA <- vector('list',5)

for(i in 1:5){
  

U_buretasVA[[i]] <- instVolumetrico(nominal=25,
                            subdivision =0.05 ,
                            tipo="bureta",
                            clase="A_AS",
                            volumen=volumenesVA.promedio$volumenesVA.promedio[i],
                            temp = 18.1)$u_V
}
U_buretasVA <- unlist(U_buretasVA)
for(i in 1:3){
  
  volumenesVA.promedio$u_buretasVA[i] <- as.numeric(U_buretasVA[i])
  
}
library(uLPAQ)
U_buretasVB <- vector('list',5)

for(i in 1:5){
  

U_buretasVB[[i]] <- instVolumetrico(nominal=25,
                            subdivision =0.05 ,
                            tipo="bureta",
                            clase="A_AS",
                            volumen=volumenesVB.promedio$volumenesVB.promedio[i],
                            temp = 18.1)$u_V
}
U_buretasVB <- unlist(U_buretasVB)
for(i in 1:3){
  
  volumenesVB.promedio$u_buretasVB[i] <- as.numeric(U_buretasVB[i])
  
}
library(uLPAQ)
U_buretasVC <- vector('list',5)

for(i in 1:5){
  

U_buretasVC[[i]] <- instVolumetrico(nominal=25,
                            subdivision =0.05 ,
                            tipo="bureta",
                            clase="A_AS",
                            volumen=volumenesVC.promedio$volumenesVC.promedio[i],
                            temp = 18.1)$u_V
}
U_buretasVC <- unlist(U_buretasVC)
for(i in 1:3){
  
  volumenesVC.promedio$u_buretasVC[i] <- as.numeric(U_buretasVC[i])
  
}
u_V_EDTA_VA <- vector('numeric',5)

  
  u_V_EDTA_vA <- sqrt(volumenesVA.promedio$U.PF.Class^2+volumenesVA.promedio$u_buretasVA^2) 

  volumenesVA.promedio$u_V_EDTA_VA <- u_V_EDTA_VA
  
par(mfrow = c(1,3))
barplot(volumenesVA.promedio$U.PF.Class, main = 'u punto final' , ylim = c(0,0.5))
barplot(volumenesVA.promedio$u_buretasVA, main = 'u bureta', ylim = c(0,0.5))
barplot(volumenesVA.promedio$u_V_EDTA_VA, main = 'u volumen EDTA' , ylim = c(0,0.5))

u_V_EDTA_VB <- vector('numeric',5)

  
  u_V_EDTA_VB <- sqrt(volumenesVB.promedio$U.PF.Class^2+volumenesVB.promedio$u_buretasVB^2) 

  volumenesVB.promedio$u_V_EDTA_VB <- u_V_EDTA_VB
  
par(mfrow = c(1,3))
barplot(volumenesVB.promedio$U.PF.Class, main = 'u punto final' , ylim = c(0,0.5))
barplot(volumenesVB.promedio$u_buretasVB, main = 'u bureta', ylim = c(0,0.5))
barplot(volumenesVB.promedio$u_V_EDTA_VB, main = 'u volumen EDTA' , ylim = c(0,0.5))

u_V_EDTA_VC <- vector('numeric',5)

  
  u_V_EDTA_VC <- sqrt(volumenesVC.promedio$U.PF.Class^2+volumenesVC.promedio$u_buretasVC^2) 

  volumenesVC.promedio$u_V_EDTA_VC <- u_V_EDTA_VC
  
par(mfrow = c(1,3))
barplot(volumenesVC.promedio$U.PF.Class, main = 'u punto final' , ylim = c(0,0.5))
barplot(volumenesVC.promedio$u_buretasVC, main = 'u bureta', ylim = c(0,0.5))
barplot(volumenesVC.promedio$u_V_EDTA_VC, main = 'u volumen EDTA' , ylim = c(0,0.5))

promedioVA <- mean(protocoloVA$`masa muestra`)
promedioVA
## [1] 1.199967
promedioVB <-mean(protocoloVB$`masa muestra`)
promedioVB
## [1] 1.199987
promedioVC <- mean(protocoloVC$`masa muestra`)
promedioVC
## [1] 2.999967
#Protocolo VA
library(uLPAQ)
masas.corregidasVA <- vector('numeric',5)
u_masasVA <- vector('numeric',5)

for(i in 1:5){
  
  masas.corregidasVA[i] <-  u_masa(lectura= promedioVA,
      densidad = 2211,
      balanza = "ME204")$m_s$ms
}

for(i in 1:5){
  
  u_masasVA[i] <-  u_masa(lectura=promedioVA,
      densidad = 2211,
      balanza = "ME204")$m_s$u_ms
}

volumenesVA.promedio$masas_corregidasVA <- masas.corregidasVA
volumenesVA.promedio$u_masasVA <- u_masasVA
#Protocolo VB
masas.corregidasVB <- vector('numeric',5)
u_masasVB <- vector('numeric',5)

for(i in 1:5){
  
  masas.corregidasVB[i] <-  u_masa(lectura=promedioVB,
      densidad = 2211,
      balanza = "ME204")$m_s$ms
}

for(i in 1:5){
  
  u_masasVB[i] <-  u_masa(lectura=promedioVB,
      densidad = 2211,
      balanza = "ME204")$m_s$u_ms
}

volumenesVB.promedio$masas_corregidasVB <- masas.corregidasVB
volumenesVB.promedio$u_masasVB <- u_masasVB
#Protocolo VC
masas.corregidasVC <- vector('numeric',5)
u_masasVC <- vector('numeric',5)

for(i in 1:5){
  
  masas.corregidasVC[i] <-  u_masa(lectura=promedioVC,
      densidad = 2211,
      balanza = "ME204")$m_s$ms
}

for(i in 1:5){
  
  u_masasVC[i] <-  u_masa(lectura=promedioVC,
      densidad = 2211,
      balanza = "ME204")$m_s$u_ms
}

volumenesVC.promedio$masas_corregidasVC <- masas.corregidasVC
volumenesVC.promedio$u_masasVC <- u_masasVC

Protocolo VA. Balón: 50. Pipeta 5 mL tipo A Protocolo VB. Balón: 100. Pipeta 10 mL tipo B Protocolo VC. Balón: 150. Pipeta 10 mL tipo A

# Protocolo VA
balon50 <- instVolumetrico(nominal =50,
                tipo="balon",
                clase="A",
                temp=18.1)

pipeta5 <- instVolumetrico(nominal=5 ,tipo="pipeta",clase="A_AS",temp=18.1)

u_dilucionVA <- sqrt(balon50$u_V^2 + pipeta5$u_V^2)

volumenesVA.promedio$u_dilucionVA <- rep(u_dilucionVA, 5)
# Protocolo VB
balon100 <- instVolumetrico(nominal =100,
                tipo="balon",
                clase="A",
                temp=18.1)

pipeta10 <- instVolumetrico(nominal=10 ,tipo="pipeta",clase="B",temp=18.1)

u_dilucionVB <- sqrt(balon100$u_V^2 + pipeta10$u_V^2)

volumenesVB.promedio$u_dilucionVB <- rep(u_dilucionVB, 5)
# Protocolo VC
balon150 <- instVolumetrico(nominal =100,
                tipo="balon",
                clase="A",
                temp=18.1)

pipeta10 <- instVolumetrico(nominal=10 ,tipo="pipeta",clase="A_AS",temp=18.1)

u_dilucionVC <- sqrt(balon50$u_V^2 + pipeta5$u_V^2)

volumenesVC.promedio$u_dilucionVC <- rep(u_dilucionVC, 5)
u_C_EDTA <- 0.002/2
volumenesVA.promedio$u_C_EDTA <- rep(u_C_EDTA,5)
volumenesVB.promedio$u_C_EDTA <- rep(u_C_EDTA,5)
volumenesVC.promedio$u_C_EDTA <- rep(u_C_EDTA,5)
volumenesVA.promedio$u_R <- sd.volumenVA/sqrt(3)
volumenesVB.promedio$u_R <- sd.volumenVB/sqrt(3)
volumenesVC.promedio$u_R <- sd.volumenVC/sqrt(3)
volumenesVA.promedio
##   volumenesVA.promedio U.PF.Class u_buretasVA u_V_EDTA_VA masas_corregidasVA
## 1             10.23000 0.04330127  0.01247211           0           1.200267
## 2             10.10333 0.04330127  0.01246663           0           1.200267
## 3             10.27000 0.04330127  0.01247386           0           1.200267
## 4             10.24333 0.04330127  0.01247211           0           1.200267
## 5             10.05667 0.04330127  0.01247211           0           1.200267
##      u_masasVA u_dilucionVA u_C_EDTA        u_R
## 1 0.0002556896   0.02777578    0.001 0.04509250
## 2 0.0002556896   0.02777578    0.001 0.02027588
## 3 0.0002556896   0.02777578    0.001 0.06244998
## 4 0.0002556896   0.02777578    0.001 0.04841946
## 5 0.0002556896   0.02777578    0.001 0.01333333
library(Deriv)
c_i_VA = Deriv(CaOH2_p.pVA,c('FD_VA',
                      'V_EDTA_VA',
                      'W_CaOH2_VA',
                      'C_EDTA_VA',
                     ' R_VA',
                      'm_muestra_vA'))
c_i_VA
## function (FD_VA, V_EDTA_VA, W_CaOH2_VA, C_EDTA_VA, R_VA, m_muestra_VA) 
## {
##     .e2 <- C_EDTA_VA * FD_VA * R_VA
##     c(FD_VA = 0.1 * (C_EDTA_VA * R_VA * V_EDTA_VA * W_CaOH2_VA/m_muestra_VA), 
##         V_EDTA_VA = 0.1 * (.e2 * W_CaOH2_VA/m_muestra_VA), W_CaOH2_VA = 0.1 * 
##             (.e2 * V_EDTA_VA/m_muestra_VA), C_EDTA_VA = 0.1 * 
##             (FD_VA * R_VA * V_EDTA_VA * W_CaOH2_VA/m_muestra_VA), 
##         ` R_VA` = 0, m_muestra_vA = 0)
## }
library(Deriv)
c_i_VB = Deriv(CaOH2_p.pVB,c('FD_VB',
                      'V_EDTA_VB',
                      'W_CaOH2_VB',
                      'C_EDTA_VB',
                     ' R_VB',
                      'm_muestra_vB'))
c_i_VB
## function (FD_VB, V_EDTA_VB, W_CaOH2_VB, C_EDTA_VB, R_VB, m_muestra_VB) 
## {
##     .e2 <- C_EDTA_VB * FD_VB * R_VB
##     c(FD_VB = 0.1 * (C_EDTA_VB * R_VB * V_EDTA_VB * W_CaOH2_VB/m_muestra_VB), 
##         V_EDTA_VB = 0.1 * (.e2 * W_CaOH2_VB/m_muestra_VB), W_CaOH2_VB = 0.1 * 
##             (.e2 * V_EDTA_VB/m_muestra_VB), C_EDTA_VB = 0.1 * 
##             (FD_VB * R_VB * V_EDTA_VB * W_CaOH2_VB/m_muestra_VB), 
##         ` R_VB` = 0, m_muestra_vB = 0)
## }
library(Deriv)
c_i_VC = Deriv(CaOH2_p.pVC,c('FD_VC',
                      'V_EDTA_VC',
                      'W_CaOH2_VC',
                      'C_EDTA_VC',
                     ' R_VC',
                      'm_muestra_vC'))
c_i_VC
## function (FD_VC, V_EDTA_VC, W_CaOH2_VC, C_EDTA_VC, R_VC, m_muestra_VC) 
## {
##     .e2 <- C_EDTA_VC * FD_VC * R_VC
##     c(FD_VC = 0.1 * (C_EDTA_VC * R_VC * V_EDTA_VC * W_CaOH2_VC/m_muestra_VC), 
##         V_EDTA_VC = 0.1 * (.e2 * W_CaOH2_VC/m_muestra_VC), W_CaOH2_VC = 0.1 * 
##             (.e2 * V_EDTA_VC/m_muestra_VC), C_EDTA_VC = 0.1 * 
##             (FD_VC * R_VC * V_EDTA_VC * W_CaOH2_VC/m_muestra_VC), 
##         ` R_VC` = 0, m_muestra_vC = 0)
## }

Valores de los coeficientes de sensibilidad, obtenido a partir de los valores de la variables de influencia.

coef.matrixVA <- matrix(nrow = 5, ncol = 6)

for(i in 1:5){
  
 coef.matrixVA[i,] <- c_i_VA(FD_VA = 50/5,
                         V_EDTA_VA = volumenesVA.promedio$volumenesVA.promedio[i],
                         W_CaOH2_VA = W_CaOH2$MM,
                          C_EDTA_VA = 0.060,
                         R_VA = 1,
                        m_muestra_VA = promedioVA)
}
coef.matrixVB <- matrix(nrow = 5, ncol = 6)

for(i in 1:5){
  
 coef.matrixVB[i,] <- c_i_VB(FD_VB = 100/10,
                         V_EDTA_VB = volumenesVB.promedio$volumenesVB.promedio[i],
                         W_CaOH2_VB = W_CaOH2$MM,
                          C_EDTA_VB = 0.060,
                         R_VB = 1,
                        m_muestra_VB = promedioVB)
}
coef.matrixVC <- matrix(nrow = 5, ncol = 6)

for(i in 1:5){
  
 coef.matrixVC[i,] <- c_i_VC(FD_VC = 250/10,
                         V_EDTA_VC = volumenesVC.promedio$volumenesVC.promedio[i],
                         W_CaOH2_VC = W_CaOH2$MM,
                          C_EDTA_VC = 0.060,
                         R_VC = 1,
                        m_muestra_VC = promedioVC)
}
u_matrixVA = data.frame(FD_VA = volumenesVA.promedio$u_dilucionVA,
                      V_EDTA_VA = volumenesVA.promedio$u_V_EDTA_VA,
                      W_CaOH2_VA = rep(W_CaOH2$u_MM,5),
                      C_EDTA_VA = volumenesVA.promedio$u_C_EDTA,
                      R_VA = volumenesVA.promedio$u_R,
                      m_muestra_VA = volumenesVA.promedio$u_masasVA)
u_matrixVB = data.frame(FD_VB = volumenesVB.promedio$u_dilucionVB,
                      V_EDTA_VB = volumenesVB.promedio$u_V_EDTA_VB,
                      W_CaOH2_VB = rep(W_CaOH2$u_MM,5),
                      C_EDTA_VB = volumenesVB.promedio$u_C_EDTA,
                      R_VB = volumenesVB.promedio$u_R,
                      m_muestra_VB = volumenesVB.promedio$u_masasVB)
u_matrixVC = data.frame(FD_VC = volumenesVC.promedio$u_dilucionVC,
                      V_EDTA_VC = volumenesVC.promedio$u_V_EDTA_VC,
                      W_CaOH2_VC = rep(W_CaOH2$u_MM,5),
                      C_EDTA_VC = volumenesVC.promedio$u_C_EDTA,
                      R_VC = volumenesVC.promedio$u_R,
                      m_muestra_VC = volumenesVC.promedio$u_masasVC)
u_c_VA <- vector('numeric',5)
for(i in 1:5){
  
  u_c_VA[i] <- sqrt(sum((coef.matrixVA[i,]*u_matrixVA[i,])^2))
}
u_c_VB <- vector('numeric',5)
for(i in 1:5){
  
  u_c_VB[i] <- sqrt(sum((coef.matrixVB[i,]*u_matrixVB[i,])^2))
}
u_c_VC <- vector('numeric',5)
for(i in 1:5){
  
  u_c_VC[i] <- sqrt(sum((coef.matrixVC[i,]*u_matrixVC[i,])^2))
}
k=2
U_VA=k*u_c_VA
U_VB=k*u_c_VB
U_VC=k*u_c_VC
u_matrixVA
##        FD_VA V_EDTA_VA  W_CaOH2_VA C_EDTA_VA       R_VA m_muestra_VA
## 1 0.02777578         0 0.004008732     0.001 0.04509250 0.0002556896
## 2 0.02777578         0 0.004008732     0.001 0.02027588 0.0002556896
## 3 0.02777578         0 0.004008732     0.001 0.06244998 0.0002556896
## 4 0.02777578         0 0.004008732     0.001 0.04841946 0.0002556896
## 5 0.02777578         0 0.004008732     0.001 0.01333333 0.0002556896
u_matrixVB
##        FD_VB  V_EDTA_VB  W_CaOH2_VB C_EDTA_VB       R_VB m_muestra_VB
## 1 0.04969215 0.04506015 0.004008732     0.001 0.02905933 0.0002556896
## 2 0.04969215 0.04506015 0.004008732     0.001 0.06333333 0.0002556896
## 3 0.04969215 0.04505987 0.004008732     0.001 0.04041452 0.0002556896
## 4 0.04969215 0.04506015 0.004008732     0.001 0.04371626 0.0002556896
## 5 0.04969215 0.04506015 0.004008732     0.001 0.05507571 0.0002556896
u_matrixVC
##        FD_VC  V_EDTA_VC  W_CaOH2_VC C_EDTA_VC       R_VC m_muestra_VC
## 1 0.02777578 0.04506344 0.004008732     0.001 0.07535103 0.0002592034
## 2 0.02777578 0.04506130 0.004008732     0.001 0.02309401 0.0002592034
## 3 0.02777578 0.04506150 0.004008732     0.001 0.04055175 0.0002592034
## 4 0.02777578 0.04506344 0.004008732     0.001 0.03844188 0.0002592034
## 5 0.02777578 0.04506344 0.004008732     0.001 0.06173420 0.0002592034
contribuciones.vol_VA <- matrix(nrow = 5, ncol = 6)

for(i in 1:5){
  for(j in 1:6){
  
  contribuciones.vol_VA[i,j] <- ((coef.matrixVA[i,j]*u_matrixVA[i,j])^2)/u_c_VA[i]^2
  }
}

colnames(contribuciones.vol_VA) <- colnames(u_matrixVA)
contribuciones.vol_VB <- matrix(nrow = 5, ncol = 6)

for(i in 1:5){
  for(j in 1:6){
  
  contribuciones.vol_VB[i,j] <- ((coef.matrixVB[i,j]*u_matrixVB[i,j])^2)/u_c_VB[i]^2
  }
}

colnames(contribuciones.vol_VB) <- colnames(u_matrixVB)
contribuciones.vol_VC <- matrix(nrow = 5, ncol = 6)

for(i in 1:5){
  for(j in 1:6){
  
  contribuciones.vol_VC[i,j] <- ((coef.matrixVC[i,j]*u_matrixVC[i,j])^2)/u_c_VC[i]^2
  }
}

colnames(contribuciones.vol_VC) <- colnames(u_matrixVC)

Con el calculo de todas las fuentes de incertidumbre, y la incertidumbre combinada, podemos graficar y compararlas entre muestras:

par(las=2)
par(mfrow = c(2,5))

for(i in 1:5){
  barplot(contribuciones.vol_VA[i,]*100,
        xlab="(%)",
        ylab=" ", 
        main= paste('contribuciones #', as.character(i)),
        horiz =T)
}
  for(i in 1:5){
  barplot(contribuciones.vol_VB[i,]*100,
        xlab="(%)",
        ylab=" ", 
        main= paste('contribuciones #', as.character(i)),
        horiz =T)
}

    for(i in 1:5){
  barplot(contribuciones.vol_VC[i,]*100,
        xlab="(%)",
        ylab=" ", 
        main= paste('contribuciones #', as.character(i)),
        horiz =T)

  
}

concentracionesVA <- vector('numeric', 5)

for (i in 1:5){
  
  concentracionesVA[i] <- CaOH2_p.pVA(FD_VA = 50/5,
                                  V_EDTA_VA = volumenesVA.promedio$volumenesVA.promedio[i],
                                  W_CaOH2_VA = W_CaOH2$MM,
                                  C_EDTA_VA =0.060,
                                  R_VA = 1,
                                  m_muestra_VA = promedioVA
                                  )
  
}

mesurando.volumenVA <- data.frame(`CaOH2_p.pVA` = concentracionesVA, `U_VA` )
colnames(mesurando.volumenVA) <- c('CaOH2_(%p.pVA)', "U_VA")
knitr::kable(mesurando.volumenVA, align = 'c')
CaOH2_(%p.pVA) U_VA
29.71557 1.0041885
29.34764 0.9917548
29.83176 1.0081150
29.75430 1.0054974
29.21208 0.9871739
concentracionesVB <- vector('numeric', 5)

for (i in 1:5){
  
  concentracionesVB[i] <- CaOH2_p.pVB(FD_VB = 100/10,
                                  V_EDTA_VB = volumenesVB.promedio$volumenesVB.promedio[i],
                                  W_CaOH2_VB = W_CaOH2$MM,
                                  C_EDTA_VB =0.060,
                                  R_VB = 1,
                                  m_muestra_VB = promedioVB
                                  )
  
}

mesurando.volumenVB <- data.frame(`CaOH2_p.pVB` = concentracionesVB, `U_VB` )
colnames(mesurando.volumenVB) <- c('CaOH2_(%p.pVB)', "U_VB")
knitr::kable(mesurando.volumenVB, align = 'c')
CaOH2_(%p.pVB) U_VB
29.34715 1.053831
29.34715 1.053831
29.27937 1.051547
29.47302 1.058072
29.65698 1.064274
concentracionesVC <- vector('numeric', 5)

for (i in 1:5){
  
  concentracionesVC[i] <- CaOH2_p.pVC(FD_VC = 250/10,
                                  V_EDTA_VC = volumenesVC.promedio$volumenesVC.promedio[i],
                                  W_CaOH2_VC = W_CaOH2$MM,
                                  C_EDTA_VC =0.060,
                                  R_VC = 1,
                                  m_muestra_VC = promedioVC
                                  )
  
}

mesurando.volumenVC <- data.frame(`CaOH2_p.pVC` = concentracionesVC, `U_VC` )
colnames(mesurando.volumenVC) <- c('CaOH2_(%p.pVC)', "U_VC")
knitr::kable(mesurando.volumenVC, align = 'c')
CaOH2_(%p.pVC) U_VC
30.14110 1.040417
29.62794 1.023831
29.67635 1.025394
29.52143 1.020394
29.78286 1.028838

GRAVIMETRÍA

Para el caso de la calcinación final luego de la precipitación, se puede revisar el análisis termo-gravimétrico para el oxalato de calcio, con el objetivo de saber la especie de calcio a la cual le vamos a determinar la masa luego de su calcinación:

Según el análisis termo-gravimétrico para los métodos GA - GB - GC y GD, se tiene:

GA: Temperatura de calcinación: 250 °C. Especie de calcio: \(CaC_{2}O_{4}\)

GB: Temperatura de calcincación: 500 °C. Especie de calcio: \(CaCO_{3}\)

GC: Temperatura de calcincación: 1000 °C. Especie de calcio: \(CaO\)

GD: Temperatura de calcincación: 500 °C. Especie de calcio: \(CaCO_{3}\)

Gravimetrías

# GA SE CALCINARON A 250 °. En forma de CaC2O4
 masasGA1 <- filter(protocoloGA, replicas ==1) %>% select( `masas finales`)%>% unlist()
 masasGA2 <- filter(protocoloGA, replicas ==2) %>% select( `masas finales`)%>% unlist()
 masasGA3 <- filter(protocoloGA, replicas ==3) %>% select( `masas finales`)%>% unlist()
masasGA1 <- as.numeric(masasGA1)
masasGA2 <- as.numeric(masasGA2)
masasGA3<- as.numeric(masasGA3)
masasGA.promedio.CaC2O4 <- (masasGA1+masasGA2+masasGA3)/3
sd.masaGA <- vector('numeric',5)
for(i in 1:5){
  
  sd.masaGA[i] <- sd(c(masasGA1[i],masasGA2[i],masasGA3[i]))
}
sd.masaGA
## [1] 1.000000e-04 0.000000e+00 5.773503e-05 0.000000e+00 5.773503e-05
masasGA.promedio <- data.frame(masasGA.promedio.CaC2O4 = masasGA.promedio.CaC2O4)
# GB SE CALCINARON A 500 °. En forma de CaCO3
 masasGB1 <- filter(protocoloGB, replicas ==1) %>% select( `masas finales`)%>% unlist()
 masasGB2 <- filter(protocoloGB, replicas ==2) %>% select( `masas finales`)%>% unlist()
 masasGB3 <- filter(protocoloGB, replicas ==3) %>% select( `masas finales`)%>% unlist()
masasGB1 <- as.numeric(masasGB1)
masasGB2 <- as.numeric(masasGB2)
masasGB3<- as.numeric(masasGB3)
masasGB.promedio.CaCO3 <- (masasGB1+masasGB2+masasGB3)/3
sd.masaGB <- vector('numeric',5)
for(i in 1:5){
  
  sd.masaGB[i] <- sd(c(masasGB1[i],masasGB2[i],masasGB3[i]))
}
sd.masaGB
## [1] 5.773503e-05 5.773503e-05 5.773503e-05 0.000000e+00 5.773503e-05
masasGB.promedio <- data.frame(masasGB.promedio.CaCO3 = masasGB.promedio.CaCO3)
# GC SE CALCINARON A 1000 °. En forma de CaO
 masasGC1 <- filter(protocoloGC, replicas ==1) %>% select( `masas finales`)%>% unlist()
 masasGC2 <- filter(protocoloGC, replicas ==2) %>% select( `masas finales`)%>% unlist()
 masasGC3 <- filter(protocoloGC, replicas ==3) %>% select( `masas finales`)%>% unlist()
masasGC1 <- as.numeric(masasGC1)
masasGC2 <- as.numeric(masasGC2)
masasGC3<- as.numeric(masasGC3)
masasGC.promedio.CaO <- (masasGC1+masasGC2+masasGC3)/3
sd.masaGC <- vector('numeric',5)
for(i in 1:5){
  
  sd.masaGC[i] <- sd(c(masasGC1[i],masasGC2[i],masasGC3[i]))
}
sd.masaGC
## [1] 5.773503e-05 1.527525e-04 0.000000e+00 1.000000e-04 5.773503e-05
masasGC.promedio <- data.frame(masasGC.promedio.CaO = masasGC.promedio.CaO)
CaOH2_grav_GA <- function(W_CaOH2_GA, 
                       W_CaC2O4_GA,
                        FD_GA, 
                       m_muestra_GA, 
                       R_GA, 
                       m_final_GA)
{
 ( m_final_GA * W_CaOH2_GA * FD_GA * 100 * R_GA )/ (W_CaC2O4_GA * m_muestra_GA)
}
CaOH2_grav_GB <- function(W_CaOH2_GB, 
                       W_CaCO3_GB,
                        FD_GB, 
                       m_muestra_GB, 
                       R_GB, 
                       m_final_GB)
{
 ( m_final_GB * W_CaOH2_GB * FD_GB * 100 * R_GB )/ (W_CaCO3_GB * m_muestra_GB)
}
CaOH2_grav_GC <- function(W_CaOH2_GC, 
                       W_CaO_GC,
                        FD_GC, 
                       m_muestra_GC, 
                       R_GC, 
                       m_final_GC)
{
 ( m_final_GC * W_CaOH2_GC * FD_GC * 100 * R_GC )/ (W_CaO_GC * m_muestra_GC)
}

Primero determinamos las masas corregidas del sólido resultante después de la calcinación

masa_corregida_CaC2O4 <- vector('list',5) 

for (i in 1:5) {

  masa_corregida_CaC2O4[[i]] <-  u_masa( masasGA.promedio$masasGA.promedio.CaC2O4[i],
                          densidad = 2120,
                          balanza= 'ME204')$m_s$ms
}

masasGA.promedio$masa_corregida_CaC2O4 <- unlist(masa_corregida_CaC2O4)
masa_corregida_CaCO3 <- vector('list',5) 

for (i in 1:5) {

  masa_corregida_CaCO3[[i]] <-  u_masa( masasGB.promedio$masasGB.promedio.CaCO3[i],
                          densidad = 2710,
                          balanza= 'ME204')$m_s$ms
}

masasGB.promedio$masa_corregida_CaCO3 <- unlist(masa_corregida_CaCO3)
masa_corregida_CaO <- vector('list',5) 

for (i in 1:5) {

  masa_corregida_CaO[[i]] <-  u_masa( masasGC.promedio$masasGC.promedio.CaO[i],
                          densidad = 3340,
                          balanza= 'ME204')$m_s$ms
}

masasGC.promedio$masa_corregida_CaO <- unlist(masa_corregida_CaO)
u_masa_CaC2O4 <- vector('list',5)

for(i in 1:5){

 u_masa_CaC2O4[[i]] <- u_masa(lectura = masasGA.promedio$masasGA.promedio.CaC2O4[i],
                          densidad = 2120,
                          balanza= 'ME204')$m_s$u_ms
}

masasGA.promedio$u_masa_CaC2O4 <- unlist(u_masa_CaC2O4)
u_masa_CaCO3 <- vector('list',5)

for(i in 1:5){

 u_masa_CaCO3[[i]] <- u_masa(lectura = masasGB.promedio$masasGB.promedio.CaCO3[i],
                          densidad = 2710,
                          balanza= 'ME204')$m_s$u_ms
}

masasGB.promedio$u_masa_CaCO3 <- unlist(u_masa_CaCO3)
u_masa_CaO <- vector('list',5)

for(i in 1:5){

 u_masa_CaO[[i]] <- u_masa(lectura = masasGC.promedio$masasGC.promedio.CaO[i],
                          densidad = 3340,
                          balanza= 'ME204')$m_s$u_ms
}

masasGC.promedio$u_masa_CaO <- unlist(u_masa_CaO)
library(AtomicWeights)
W_CaCO3<- getMolarMass(atomsType = c('Ca','C',"O"),
                       c(1,1,3)
                       )
W_CaCO3
##         MM        u_MM
## 1 100.0868 0.004091947
library(AtomicWeights)
W_CaO <- getMolarMass(atomsType = c('Ca','O'),
                       c(1,1)
                       )
W_CaO
##        MM      u_MM
## 1 56.0774 0.0040057
W_CaC2O4 <- getMolarMass(atomsType = c('Ca','C',"O"),
                       c(1,2,4)
                       )
W_CaC2O4
##         MM        u_MM
## 1 128.0968 0.004250114
W_CaOH2 <- getMolarMass(atomsType = c('Ca','O',"H"),
                       c(1,1,2)
                       )
W_CaOH2
##         MM        u_MM
## 1 58.09335 0.004008732
masasGA.promedio$u_W_CaC2O4 <- W_CaC2O4$u_MM
masasGB.promedio$u_W_CaCO3 <- W_CaCO3$u_MM
masasGC.promedio$u_W_CaO <- W_CaO$u_MM
masasGA.promedio$u_W_CaOH2 <- W_CaOH2$u_MM
masasGB.promedio$u_W_CaOH2 <- W_CaOH2$u_MM
masasGC.promedio$u_W_CaOH2 <- W_CaOH2$u_MM
u_dilucionGA <- u_dilucionVA
u_dilucionGB <- u_dilucionVB
u_dilucionGC <- u_dilucionVC
masasGA.promedio$u_dilucion <- u_dilucionGA
masasGB.promedio$u_dilucion <- u_dilucionGB
masasGC.promedio$u_dilucion <- u_dilucionGC
promedioGA <-mean(protocoloGA$`masa muestra`)
promedioGA
## [1] 1.19974
promedioGB <-mean(protocoloGB$`masa muestra`)
promedioGB
## [1] 1.200273
promedioGC <-mean(protocoloGC$`masa muestra`)
promedioGC
## [1] 3.00026
#Protocolo GA
masas.corregidasGA <- vector('numeric',5)
u_masasGA <- vector('numeric',5)

for(i in 1:5){
  
  masas.corregidasGA[i] <-  u_masa(lectura=1.200,
      densidad = 2211,
      balanza = "ME204")$m_s$ms
}
masasGA.promedio$masas_corregidasGA <- masas.corregidasGA

for(i in 1:5){
  
  u_masasGA[i] <-  u_masa(lectura=1.200,
      densidad = 2211,
      balanza = "ME204")$m_s$u_ms
}

masasGA.promedio$u_masasGA_corregidas <- u_masasGA
#Protocolo GB
masas.corregidasGB <- vector('numeric',5)
u_masasGB <- vector('numeric',5)

for(i in 1:5){
  
  masas.corregidasGB[i] <-  u_masa(lectura=promedioGB,
      densidad = 2211,
      balanza = "ME204")$m_s$ms
}
masasGB.promedio$masas_corregidasGB <- masas.corregidasGB

for(i in 1:5){
  
  u_masasGB[i] <-  u_masa(lectura= promedioGB,
      densidad = 2211,
      balanza = "ME204")$m_s$u_ms
}


masasGB.promedio$u_masasGB_corregidas <- u_masasGB
#Protocolo GC
masas.corregidasGC <- vector('numeric',5)
u_masasGC <- vector('numeric',5)

for(i in 1:5){
  
  masas.corregidasGC[i] <-  u_masa(lectura=promedioGC
                                   ,
      densidad = 2211,
      balanza = "ME204")$m_s$ms
}
masasGC.promedio$masas_corregidasGC <- masas.corregidasGC
for(i in 1:5){
  
  u_masasGC[i] <-  u_masa(lectura=promedioGC,
      densidad = 2211,
      balanza = "ME204")$m_s$u_ms
}


masasGC.promedio$u_masasGC_corregidas <- u_masasGC
masasGA.promedio$u_R <- sd.masaGA/sqrt(3)
R = 1
masasGB.promedio$u_R <- sd.masaGB/sqrt(3)
R = 1
masasGC.promedio$u_R <- sd.masaGC/sqrt(3)
R = 1
masasGA.promedio
##   masasGA.promedio.CaC2O4 masa_corregida_CaC2O4 u_masa_CaC2O4  u_W_CaC2O4
## 1              0.07660000            0.07662049  0.0002550222 0.004250114
## 2              0.07020000            0.07021878  0.0002550217 0.004250114
## 3              0.08036667            0.08038817  0.0002550225 0.004250114
## 4              0.07960000            0.07962129  0.0002550224 0.004250114
## 5              0.07776667            0.07778747  0.0002550223 0.004250114
##     u_W_CaOH2 u_dilucion masas_corregidasGA u_masasGA_corregidas          u_R
## 1 0.004008732 0.02777578             1.2003         0.0002556896 5.773503e-05
## 2 0.004008732 0.02777578             1.2003         0.0002556896 0.000000e+00
## 3 0.004008732 0.02777578             1.2003         0.0002556896 3.333333e-05
## 4 0.004008732 0.02777578             1.2003         0.0002556896 0.000000e+00
## 5 0.004008732 0.02777578             1.2003         0.0002556896 3.333333e-05
masasGB.promedio
##   masasGB.promedio.CaCO3 masa_corregida_CaCO3 u_masa_CaCO3   u_W_CaCO3
## 1             0.05556667           0.05557648 0.0002549970 0.004091947
## 2             0.05663333           0.05664334 0.0002549970 0.004091947
## 3             0.06076667           0.06077740 0.0002549972 0.004091947
## 4             0.06600000           0.06601166 0.0002549974 0.004091947
## 5             0.05896667           0.05897708 0.0002549971 0.004091947
##     u_W_CaOH2 u_dilucion masas_corregidasGB u_masasGB_corregidas          u_R
## 1 0.004008732 0.04969215           1.200574         0.0002556899 3.333333e-05
## 2 0.004008732 0.04969215           1.200574         0.0002556899 3.333333e-05
## 3 0.004008732 0.04969215           1.200574         0.0002556899 3.333333e-05
## 4 0.004008732 0.04969215           1.200574         0.0002556899 0.000000e+00
## 5 0.004008732 0.04969215           1.200574         0.0002556899 3.333333e-05
masasGC.promedio
##   masasGC.promedio.CaO masa_corregida_CaO   u_masa_CaO   u_W_CaO   u_W_CaOH2
## 1           0.02966667         0.02967008 0.0002549805 0.0040057 0.004008732
## 2           0.02056667         0.02056903 0.0002549804 0.0040057 0.004008732
## 3           0.03660000         0.03660421 0.0002549806 0.0040057 0.004008732
## 4           0.03630000         0.03630417 0.0002549806 0.0040057 0.004008732
## 5           0.04063333         0.04063801 0.0002549806 0.0040057 0.004008732
##   u_dilucion masas_corregidasGC u_masasGC_corregidas          u_R
## 1 0.02777578           3.001011         0.0002592042 3.333333e-05
## 2 0.02777578           3.001011         0.0002592042 8.819171e-05
## 3 0.02777578           3.001011         0.0002592042 0.000000e+00
## 4 0.02777578           3.001011         0.0002592042 5.773503e-05
## 5 0.02777578           3.001011         0.0002592042 3.333333e-05
library(Deriv)

c_i_gravGA = Deriv(CaOH2_grav_GA,c('W_CaOH2_GA', 
                       'W_Cac2O4_GA',
                       'FD_GA', 
                       'm_muestra_GA', 
                       'R_GA', 
                       'm_final_GA'))
c_i_gravGB = Deriv(CaOH2_grav_GB,c('W_CaOH2_GB', 
                       'W_CaCO3_GB',
                       'FD_GB', 
                       'm_muestra_GB', 
                       'R_GB', 
                       'm_final_GB'))
c_i_gravGC = Deriv(CaOH2_grav_GC,c('W_CaOH2_GC', 
                       'W_CaO_GC',
                       'FD_GC', 
                       'm_muestra_GC', 
                       'R_GC', 
                       'm_final_GC'))

Valores de los coeficientes de sensiblidad para la estimación de %CaOH2 mediante gravimetría.

coef.matrix.gravGA <- matrix(nrow = 5, ncol = 6)

for(i in 1:5){
  
  coef.matrix.gravGA[i,] <- c_i_gravGA(W_CaOH2_GA = W_CaOH2$MM,
                         W_CaC2O4_GA  = W_CaC2O4$MM,
                         FD_GA = 50/5,
                         m_muestra_GA = masasGA.promedio$masas_corregidasGA[i],
                         R = 1,
                         m_final_GA = masasGA.promedio$masa_corregida_CaC2O4[i])

}
coef.matrix.gravGB <- matrix(nrow = 5, ncol = 6)

for(i in 1:5){
  
  coef.matrix.gravGB[i,] <- c_i_gravGB(W_CaOH2_GB  = W_CaOH2$MM,
                         W_CaCO3_GB =  W_CaCO3$MM,
                         FD_GB = 100/10,
                         m_muestra_GB = masasGB.promedio$masas_corregidasGB[i],
                         R = 1,
                         m_final_GB = masasGB.promedio$masa_corregida_CaCO3[i])

}
coef.matrix.gravGC <- matrix(nrow = 5, ncol = 6)

for(i in 1:5){
  
  coef.matrix.gravGC[i,] <- c_i_gravGC(W_CaOH2_GC = W_CaOH2$MM,
                         W_CaO_GC  = W_CaO$MM,
                         FD_GC = 250/10,
                         m_muestra_GC = masasGC.promedio$masas_corregidasGC[i],
                         R = 1,
                         m_final_GC = masasGC.promedio$masa_corregida_CaO[i])

}

Matriz recogiendo las incertidumbres estándar de cada una de las fuentes, para gravimetría.

W_CaOH2
##         MM        u_MM
## 1 58.09335 0.004008732
u_matrix_gravGA <- data.frame(u_W_CaOH2_GA = rep(W_CaOH2$u_MM,5),
                            u_W_CaC2O4_GA = rep(W_CaC2O4$u_MM,5),
                            u_FD_GA = masasGA.promedio$u_dilucion,
                            u_m_muestra_GA = masasGA.promedio$u_masasGA_corregidas,
                            u_R_GA = masasGA.promedio$u_R,
                            u_m_final_GA = masasGA.promedio$u_masa_CaC2O4)
u_matrix_gravGB <- data.frame(u_W_CaOH2_GB = rep(W_CaOH2$u_MM,5),
                            u_W_CaCO3_GB = rep(W_CaCO3$u_MM,5),
                            u_FD_GB = masasGB.promedio$u_dilucion,
                            u_m_muestra_GB = masasGB.promedio$u_masasGB_corregidas,
                            u_R_GB = masasGB.promedio$u_R,
                            u_m_final_GB = masasGB.promedio$u_masa_CaCO3)
u_matrix_gravGC <- data.frame(u_W_CaOH2_GC = rep(W_CaOH2$u_MM,5),
                            u_W_CaO_GC = rep(W_CaO$u_MM,5),
                            u_FD_GC = masasGC.promedio$u_dilucion,
                            u_m_muestra_GC = masasGC.promedio$u_masasGC_corregidas,
                            u_R_GC = masasGC.promedio$u_R,
                            u_m_final_GC = masasGC.promedio$u_masa_CaO)

Teniendo las dos matrices, una de coeficientes de sensibilidad y otra de incertidumbres, podemos calcular el valor de incertidumbre combinada para cada uno de los 9 grupos de laboratorio, y guardarla cada posición del vector u_c_grav.

u_c_gravGA <- vector('numeric', 5)

# Ahora, se calcula fila por fila, la incertidumbre combinada

for(i in 1:5){
  
  u_c_gravGA[i] <- sqrt(sum((coef.matrix.gravGA[i,]*u_matrix_gravGA[i,])^2))
}

u_c_gravGB <- vector('numeric', 5)
for(i in 1:5){
  
  u_c_gravGB[i] <- sqrt(sum((coef.matrix.gravGB[i,]*u_matrix_gravGB[i,])^2))
}

u_c_gravGC <- vector('numeric', 5)
for(i in 1:5){
  
  u_c_gravGC[i] <- sqrt(sum((coef.matrix.gravGC[i,]*u_matrix_gravGC[i,])^2))
}

Incertidumbres expandidas

k=2
U_gravGA=k*u_c_gravGA
U_gravGB=k*u_c_gravGB
U_gravGC=k*u_c_gravGC

Contribuciones de cada fuente

contribuciones.gravGA <- matrix(nrow = 5, ncol = 6)

for(i in 1:5){
  for(j in 1:6){
  
  contribuciones.gravGA[i,j] <- ((coef.matrix.gravGA[i,j]*u_matrix_gravGA[i,j])^2)/u_c_gravGA[i]^2
  }
}

colnames(contribuciones.gravGA) <- colnames(u_matrix_gravGA)
contribuciones.gravGB <- matrix(nrow = 5, ncol = 6)

for(i in 1:5){
  for(j in 1:6){
  
  contribuciones.gravGB[i,j] <- ((coef.matrix.gravGB[i,j]*u_matrix_gravGB[i,j])^2)/u_c_gravGB[i]^2
  }
}

colnames(contribuciones.gravGB) <- colnames(u_matrix_gravGB)
contribuciones.gravGC <- matrix(nrow = 5, ncol = 6)

for(i in 1:5){
  for(j in 1:6){
  
  contribuciones.gravGC[i,j] <- ((coef.matrix.gravGC[i,j]*u_matrix_gravGC[i,j])^2)/u_c_gravGC[i]^2
  }
}

colnames(contribuciones.gravGC) <- colnames(u_matrix_gravGC)
par(las=2)
par(mfrow = c(2,5))

for(i in 1:5){
  barplot(contribuciones.gravGA[i,]*100,
        xlab="(%)",
        ylab=" ", 
        main= paste('contribuciones #', as.character(c(1:5))[i]),
        horiz =T)
  
}
for(i in 1:5){
  barplot(contribuciones.gravGB[i,]*100,
        xlab="(%)",
        ylab=" ", 
        main= paste('contribuciones #', as.character(c(1:5))[i]),
        horiz =T)
  
}

for(i in 1:5){
  barplot(contribuciones.gravGC[i,]*100,
        xlab="(%)",
        ylab=" ", 
        main= paste('contribuciones #', as.character(c(1:5))[i]),
        horiz =T)
  
}

Reporte de las concentraciones.

Primero, se calcula las concentraciones de cada una de las muestras, a partir de los volumenes promediados:

concentraciones_gravGA <- vector('numeric', 5)

for (i in 1:5){
  
concentraciones_gravGA[i] <- CaOH2_grav_GA(W_CaOH2_GA = W_CaOH2$MM, 
                    W_CaC2O4 = W_CaC2O4$MM,
                     FD_GA =  50/5, 
                      m_muestra_GA = masasGA.promedio$masas_corregidasGA[i], 
                       R = 1, 
                     m_final_GA = masasGA.promedio$masa_corregida_CaC2O4[i])
}
mesurando.grav_GA <- data.frame(`CaOH2_grav_GA` = concentraciones_gravGA, `U_gravGA`)
colnames(mesurando.grav_GA) <- c('CaOH2_(%p.pGA)',"U_GA")
knitr::kable(mesurando.grav_GA)
CaOH2_(%p.pGA) U_GA
28.94964 0.2513558
26.53087 0.2428997
30.37318 0.2565068
30.08344 0.2554360
29.39056 0.2529257
concentraciones_gravGB <- vector('numeric', 5)

for (i in 1:5){
  
concentraciones_gravGB[i] <- CaOH2_grav_GB(W_CaOH2_GB = W_CaOH2$MM, 
                    W_CaCO3 = W_CaCO3$MM,
                     FD_GB =  100/10, 
                      m_muestra_GB = masasGB.promedio$masas_corregidasGB[i], 
                       R = 1, 
                     m_final_GB = masasGB.promedio$masa_corregida_CaCO3[i])
}
mesurando.grav_GB <- data.frame(`CaOH2_grav_GB` = concentraciones_gravGB, `U_gravGB`)
colnames(mesurando.grav_GB) <- c('CaOH2_(%p.pGB)',"U_GB")
knitr::kable(mesurando.grav_GB)
CaOH2_(%p.pGB) U_GB
26.86902 0.3636669
27.38480 0.3674555
29.38346 0.3824322
31.91401 0.4020000
28.51307 0.3758541
concentraciones_gravGC <- vector('numeric', 5)

for (i in 1:5){
  
concentraciones_gravGC[i] <- CaOH2_grav_GC(W_CaOH2_GC = W_CaOH2$MM, 
                    W_CaO = W_CaO$MM,
                     FD_GC =  250/10, 
                      m_muestra_GC = masasGC.promedio$masas_corregidasGC[i], 
                       R = 1, 
                     m_final_GC = masasGC.promedio$masa_corregida_CaO[i])
}
mesurando.grav_GC <- data.frame(`CaOH2_grav_GC` = concentraciones_gravGC, `U_gravGC`)
colnames(mesurando.grav_GC) <- c('CaOH2_(%p.pGC)',"U_GC")
knitr::kable(mesurando.grav_GC)
CaOH2_(%p.pGC) U_GC
25.60529 0.4438136
17.75108 0.4418962
31.58945 0.4457369
31.33052 0.4456601
35.07061 0.4470445

PROTOCOLO GD

GD: Temperatura de calcincación: 500 °C. Especie de calcio: \(CaCO_{3}\)

protocoloGD
## # A tibble: 15 x 13
##     ...1 id    `masa muestra` `balanza muestr~ `volumen aforo` `masa alicuota`
##    <dbl> <chr>          <dbl> <chr>                      <dbl>           <dbl>
##  1     1 116d            1.20 ME204                        0.1            10.0
##  2     2 117d            1.20 ME204                        0.1            10.0
##  3     3 118d            1.20 ME204                        0.1            10.0
##  4     4 119d            1.20 ME204                        0.1            10.0
##  5     5 120d            1.20 ME204                        0.1            10.0
##  6     6 116d            1.20 ME204                        0.1            10.0
##  7     7 117d            1.20 ME204                        0.1            10.0
##  8     8 118d            1.20 ME204                        0.1            10.0
##  9     9 119d            1.20 ME204                        0.1            10.0
## 10    10 120d            1.20 ME204                        0.1            10.0
## 11    11 116d            1.20 ME204                        0.1            10.0
## 12    12 117d            1.20 ME204                        0.1            10.0
## 13    13 118d            1.20 ME204                        0.1            10.0
## 14    14 119d            1.20 ME204                        0.1            10.0
## 15    15 120d            1.20 ME204                        0.1            10.0
## # ... with 7 more variables: `clase pipeta` <chr>, `clase bureta` <chr>,
## #   `temperatura calcinado` <dbl>, `balanza calcinado` <chr>, `volumen
## #   EDTA` <chr>, `masas finales` <dbl>, `replica 2` <dbl>
# Modelo para el protocolo GD

CaOH2_grav_GD <- function(W_CaOH2_GD, 
                       W_CaCO3_GD,
                      FD_GD,
                       m_muestra_GD, 
                       R_GD, 
                       m_final_GD)
{
 ( m_final_GD * W_CaOH2_GD * FD_GD * 100 * R_GD )/ (W_CaCO3_GD * m_muestra_GD)
}

Para el caso de este protocolo el factor de dilución no es von volumen sino con masa, en este caso se toman alícuotas de aproximadamente 10 g de un balón aforado de 100 mL que pesó 110.1023g.

FD = 100.1023/mean(protocoloGD$`masa alicuota`)
FD
## [1] 10.0099
# GD SE CALCINARON A 500 °. En forma de CaCO3
 masasGD1 <- filter(protocoloGB, replicas ==1) %>% select( `masas finales`)%>% unlist()
 masasGD2 <- filter(protocoloGB, replicas ==2) %>% select( `masas finales`)%>% unlist()
 masasGD3 <- filter(protocoloGB, replicas ==3) %>% select( `masas finales`)%>% unlist()
masasGD1 <- as.numeric(masasGD1)
masasGD2 <- as.numeric(masasGD2)
masasGD3<- as.numeric(masasGD3)
masasGD.promedio.CaCO3 <- (masasGD1+masasGD2+masasGD3)/3
sd.masaGD <- vector('numeric',5)
for(i in 1:5){
  
  sd.masaGD[i] <- sd(c(masasGD1[i],masasGD2[i],masasGD3[i]))
}
sd.masaGD
## [1] 5.773503e-05 5.773503e-05 5.773503e-05 0.000000e+00 5.773503e-05
masasGD.promedio <- data.frame(masasGD.promedio.CaCO3 = masasGD.promedio.CaCO3)
masa_corregida_CaCO3_GD <- vector('list',5) 

for (i in 1:5) {

  masa_corregida_CaCO3_GD[[i]] <-  u_masa( masasGD.promedio$masasGD.promedio.CaCO3[i],
                          densidad = 2710,
                          balanza= 'ME204')$m_s$ms
}

masasGD.promedio$masa_corregida_CaCO3_GD <- unlist(masa_corregida_CaCO3_GD)
u_masa_CaCO3_GD <- vector('list',5)

for(i in 1:5){

 u_masa_CaCO3_GD[[i]] <- u_masa(lectura = masasGD.promedio$masasGD.promedio.CaCO3[i],
                          densidad = 2710,
                          balanza= 'ME204')$m_s$u_ms
}

masasGD.promedio$u_masa_CaCO3_GD <- unlist(u_masa_CaCO3_GD)
W_CaOH2
##         MM        u_MM
## 1 58.09335 0.004008732
W_CaCO3
##         MM        u_MM
## 1 100.0868 0.004091947
masasGD.promedio$u_W_CaCO3 <- W_CaCO3$u_MM
masasGD.promedio$u_W_CaOH2 <- W_CaOH2$u_MM

Para hallar la incertidumbre del factor de dilución se va a hallar la incertidumbre asociada a la medición de la masa tanto para la alícuota como para la masa del balón, y luego se hará suma de cuadrados para la incertidumbre del factor de dilución.

promedio_masa_alicuota <- mean(protocoloGD$`masa alicuota`)
promedio_masa_alicuota
## [1] 10.00033
masas.alicuota.corregidasGD <- vector('numeric',5)
u_masas_alicuotaGD <- vector('numeric',5)

for(i in 1:5){
  
  masas.alicuota.corregidasGD[i] <-  u_masa(lectura=promedio_masa_alicuota,
      densidad = 2211,
      balanza = "ME204")$m_s$ms
}
for(i in 1:5){
  
  u_masas_alicuotaGD[i] <-  u_masa(lectura=promedio_masa_alicuota,
      densidad = 2211,
      balanza = "ME204")$m_s$u_ms
}

masa.balon.corregidaGD <- vector('numeric',5)
u_masa_balonGD <- vector('numeric',5)

for(i in 1:5){
  
  masa.balon.corregidaGD[i] <-  u_masa(lectura=110.1023,
      densidad = 2211,
      balanza = "ME204")$m_s$ms
}
for(i in 1:5){
  
  u_masa_balonGD[i] <-  u_masa(lectura=110.1023,
      densidad = 2211,
      balanza = "ME204")$m_s$u_ms
}

u_dilucionGD <- sqrt(u_masas_alicuotaGD^2 + u_masa_balonGD^2)
masasGD.promedio$u_dilucionGD <- u_dilucionGD
promedioGD <- mean(protocoloGD$`masa muestra`)
promedioGD
## [1] 1.20012
masas.corregidasGD <- vector('numeric',5)
u_masasGD <- vector('numeric',5)

for(i in 1:5){
  
  masas.corregidasGD[i] <-  u_masa(lectura=promedioGD,
      densidad = 2211,
      balanza = "ME204")$m_s$ms
}
masasGD.promedio$masas_corregidasGD <- masas.corregidasGD

for(i in 1:5){
  
  u_masasGD[i] <-  u_masa(lectura=promedioGD,
      densidad = 2211,
      balanza = "ME204")$m_s$u_ms
}
masasGD.promedio$u_masasGD_corregidas <- u_masasGD
masasGD.promedio$u_R <- sd.masaGD/sqrt(1)
R = 1
library(Deriv)

c_i_gravGD = Deriv(CaOH2_grav_GD,c('W_CaOH2_GD', 
                       'W_CacO3_GD',
                       'FD_GD', 
                       'm_muestra_GD', 
                       'R_GD', 
                       'm_final_GD'))
coef.matrix.gravGD<- matrix(nrow = 5, ncol = 6)

for(i in 1:5){
  
  coef.matrix.gravGD[i,] <- c_i_gravGD(W_CaOH2_GD  = W_CaOH2$MM,
                         W_CaCO3_GD =  W_CaCO3$MM,
                         FD_GD = 100.1023/10.00033,
                         m_muestra_GD = masasGD.promedio$masas_corregidasGD[i],
                         R = 1,
                         m_final_GD = masasGD.promedio$masa_corregida_CaCO3[i])

}
u_matrix_gravGD <- data.frame(u_W_CaOH2_GD = rep(W_CaOH2$u_MM,5),
                            u_W_CaCO3_GD = rep(W_CaCO3$u_MM,5),
                            u_FD_GD = masasGD.promedio$u_dilucion,
                            u_m_muestra_GD = masasGD.promedio$u_masasGD_corregidas,
                            u_R_GD = masasGD.promedio$u_R,
                            u_m_final_GD = masasGD.promedio$u_masa_CaCO3)

Teniendo las dos matrices, una de coeficientes de sensibilidad y otra de incertidumbres, podemos calcular el valor de incertidumbre combinada para cada muestra, y guardarla cada posición del vector u_c_grav.

u_c_gravGD <- vector('numeric', 5)
for(i in 1:5){
  
  u_c_gravGD[i] <- sqrt(sum((coef.matrix.gravGD[i,]*u_matrix_gravGD[i,])^2))
}
k=2
U_gravGD=k*u_c_gravGD
contribuciones.gravGD <- matrix(nrow = 5, ncol = 6)

for(i in 1:5){
  for(j in 1:6){
  
  contribuciones.gravGD[i,j] <- ((coef.matrix.gravGD[i,j]*u_matrix_gravGD[i,j])^2)/u_c_gravGD[i]^2
  }
}

colnames(contribuciones.gravGD) <- colnames(u_matrix_gravGD)
par(las=2)
par(mfrow = c(1,5))

for(i in 1:5){
  barplot(contribuciones.gravGD[i,]*100,
        xlab="(%)",
        ylab=" ", 
        main= paste('contribuciones #', as.character(c(1:5))[i]),
        horiz =T)
  
}

concentraciones_gravGD <- vector('numeric', 5)

for (i in 1:5){
  
concentraciones_gravGD[i] <- CaOH2_grav_GD(W_CaOH2_GD = W_CaOH2$MM, 
                    W_CaCO3 = W_CaCO3$MM,
                     FD_GD = 100.1023/10.00033, 
                      m_muestra_GD = masasGD.promedio$masas_corregidasGD[i], 
                       R = 1, 
                     m_final_GD = masasGD.promedio$masa_corregida_CaCO3[i])
}
mesurando.grav_GD <- data.frame(`CaOH2_grav_GD` = concentraciones_gravGD, `U_gravGD`)
colnames(mesurando.grav_GD) <- c('CaOH2_(%p.pGD)',"U_GD")
knitr::kable(mesurando.grav_GD)
CaOH2_(%p.pGD) U_GD
26.89905 0.2473291
27.41541 0.2473482
29.41630 0.2474255
31.94969 0.2475037
28.54495 0.2473912

REPORTE FINAL

Finalmente, se pueden unir por columnas los objetos de los mesurandos tanto para volumetría como para gravimetría. Para esto se utiliza la función cbind.

tabla.final <- cbind(mesurando.volumenVA, mesurando.volumenVB, mesurando.volumenVC,  mesurando.grav_GA, mesurando.grav_GB, mesurando.grav_GC, mesurando.grav_GD)
knitr::kable(tabla.final)
CaOH2_(%p.pVA) U_VA CaOH2_(%p.pVB) U_VB CaOH2_(%p.pVC) U_VC CaOH2_(%p.pGA) U_GA CaOH2_(%p.pGB) U_GB CaOH2_(%p.pGC) U_GC CaOH2_(%p.pGD) U_GD
29.71557 1.0041885 29.34715 1.053831 30.14110 1.040417 28.94964 0.2513558 26.86902 0.3636669 25.60529 0.4438136 26.89905 0.2473291
29.34764 0.9917548 29.34715 1.053831 29.62794 1.023831 26.53087 0.2428997 27.38480 0.3674555 17.75108 0.4418962 27.41541 0.2473482
29.83176 1.0081150 29.27937 1.051547 29.67635 1.025394 30.37318 0.2565068 29.38346 0.3824322 31.58945 0.4457369 29.41630 0.2474255
29.75430 1.0054974 29.47302 1.058072 29.52143 1.020394 30.08344 0.2554360 31.91401 0.4020000 31.33052 0.4456601 31.94969 0.2475037
29.21208 0.9871739 29.65698 1.064274 29.78286 1.028838 29.39056 0.2529257 28.51307 0.3758541 35.07061 0.4470445 28.54495 0.2473912