18.4.1 Analytical Duplicates


# Tab. 18.3.: Precision for selected elements from the 52 analytical duplicates
library(StatDA)
# Analytical duplicates
data(CHorANADUP)

xd1=CHorANADUP[,3:96]
xd2=CHorANADUP[,97:190]

sel=c("Ag","Al","Al2O3","As","Ba","Bi","CaO","Cd","Co","Cr","Cu","Fe","Fe_INAA","Fe2O3",
"La","La_INAA","Ni","Pb","S","Sc_INAA","Se","Te","Th_INAA","V","Zn")
dat1=xd1[,paste("A1_",sel,sep="")]
dat2=xd2[,paste("A2_",sel,sep="")]

res2 = rep(NA, length(sel))
for (i in 1:length(sel)){
dat=cbind(dat1[,i],dat2[,i])
dat=na.omit(dat)
dat.m=mean(dat)
dat.s=1/(2*nrow(dat))*sum((dat[,1]-dat[,2])^2)
res2[i]=100*sqrt(dat.s)/dat.m
}
names(res2)<- sel

res2r <- round(res2,1)
write.csv(res2r,file="tab-18-3.csv")


# Fig. 18.2.: Thompson-Howarth plot of duplicates for K2O and Zn_INAA
library(StatDA)
# Analytical duplicates
data(CHorANADUP)

xd1=CHorANADUP[,3:96]
xd2=CHorANADUP[,97:190]

pdf("fig-18-2.pdf",width=9,height=4.5)
par(mfrow=c(1,2),mar=c(4,4,2,2))
i=39
xmean=apply(cbind(xd1[,i],xd2[,i]),1,mean)
xdiff=abs(xd1[,i]-xd2[,i])
xmax=max(xmean)
ymax=max(xdiff)
plot(xmean,xdiff,main="K2O",xlab="Mean [wt.-%]",ylab="Absolute difference [wt.-%]",
ylim=c(0,ymax))
abline(a=0,b=0.1)
abline(a=0,b=0.2)
text(2.7,0.2,"<10%")
text(2.65,0.4,"10-20%")
text(2.6,1.2,">20%")
# label observations
text(1.38,0.33,"89,85",cex=0.85)
text(1.82,0.83,"224,222",cex=0.85)
text(2.0,1.73,"299,293",cex=0.85)
text(1.7,0.47,"509,498",cex=0.85)
text(1.36,1.03,"629,620",cex=0.85)

i=94
xmean=apply(cbind(xd1[,i],xd2[,i]),1,mean)
xdiff=abs(xd1[,i]-xd2[,i])
xmax=max(xmean)
ymax=max(xdiff)
plot(xmean,xdiff,main="Zn_INAA",xlab="Mean [mg/kg]",ylab="Absolute difference [mg/kg]",
ylim=c(0,ymax))
abline(a=0,b=0.1)
abline(a=0,b=0.2)
text(180,2,"<10%")
text(130,18,"10-20%")
text(170,80,">20%")

dev.off()