我想知道如何创建一个Youden图来分析实验室间测试的结果。您可以在此处下载数据:data。测试包括确定参与者的表现以测量一个等级的3个等级。数据包含每个级别中每个参与者的个人平均值和标准差。
感谢您的帮助!
答案 0 :(得分:3)
所以,既然你没有准确地了解Youden情节是什么,对你来说,以及我之前从未听说过这样的情节,我将直接使用W. J. Youden (1959)定义来绘制它。
通过在纸张底部绘制惯常的x轴并在此轴上放置一个覆盖材料A的结果范围的刻度来制备图表。在左边,y轴具有刻度在相同的单位中,包括材料B报告的结果范围。然后,实验室报告的结果对用于绘制点。与报告实验室一样多的要点。在绘制点之后,绘制平行于x轴的水平中线,使得线上方的点数与其下方的点数相同。第二条中间线平行于y轴绘制,因此放置左边的点与此线右侧的点数相同。
让我们从那开始吧。
dat <- read.table("dat_youd.csv",sep=",",head=TRUE)
datL <- split(dat,dat$levels)
#I don't really get what your levels are and why there are three of them though, but i'll assume there are equivalent to Youden's "materials".
plot(datL[[1]]$MeanValues,datL[[2]]$MeanValues,asp=1, pch=19, xlab="Sample A", ylab="Sample B")
#asp=1 because of the circle.
mB <- median(datL[[2]]$MeanValues)
mA <- median(datL[[1]]$MeanValues)
abline(h=mB, v=mA)
该图的第三个元素是45°线:
假设两种材料的类型相似且性质的幅度几乎相等,则报告的A结果中的分散应与B结果的分散大致相同。在那种情况下,通过中位数交叉的45度线可以估计数据的精确度。
这是:
curve(x-(mA-mB),from=par('usr')[1],to=par('usr')[3],add=TRUE)
#I use here par('usr') so that it expands on the whole plot area
然后是“标准偏差”计算:
从每个点到45度线的垂直距离可用于形成精度的估计。 [...]这些垂线不需要在方格纸上测量。而是为每个实验室写下差异A-B跟踪标志。将这些差异称为d1,d2,...,dn。计算代数平均差。从每个差值中减去d并获得一组校正差值d'1,d'2,...,d'n。这些差异的绝对值的平均值乘以sqrt(pi)/ 2或0.886得出标准偏差的估计值。
让我们计算:
d <- mean(datL[[1]]$MeanValues-datL[[2]]$MeanValues)
d_prime <- datL[[1]]$MeanValues-datL[[2]]$MeanValues-d
r <- mean(abs(d_prime))*sqrt(pi)/2
最后是圈子:
将上面得到的标准偏差乘以2.45,得出圆圈的半径,如果可以消除个别常数误差,则应包括95%的实验室。
我们可以采用以下方式:
r <- 2.45 * r
t <- seq(0,2*pi,by=0.01)
x <- r*cos(t) + mA
y <- r*sin(t) + mB
lines(x,y)
结果:
作为一个功能:
youden <- function(serieA, serieB){
plot(serieA,serieB,asp=1, pch=19, xlab="Sample A", ylab="Sample B")
mB <- median(serieB)
mA <- median(serieA)
abline(h=mB, v=mA)
curve(x-(mA-mB),from=par('usr')[1],to=par('usr')[3],add=TRUE)
d <- mean(serieA-serieB)
d_prime <- serieA-serieB-d
r <- 2.45*mean(abs(d_prime))*sqrt(pi)/2
t<-seq(0,2*pi,by=0.01)
x<-r*cos(t)+mA
y<-r*sin(t)+mB
lines(x,y)
}
以第三个系列为例:
youden(datL[[1]]$MeanValues, datL[[3]]$MeanValues)