005-精密度分析

精密度分析

分析目的

精密度(precision)评价同一测量系统在可重复条件下对同一样品测得结果之间的一致程度,
通常用标准差(SD)或变异系数(CV%)表示。CLSI EP05
将精密度按条件细分为批内(within-run)、
批间(between-run)和日间(between-day)等方差分量,并给出各分量的估计、置信区间以及用于判定
的可接受限。

本文演示如何使用 ivdtools 包的 precision()
建立精密度方差分量分析,完成异常值检查、正态性
评估、方差分量与置信区间估计、Sadler 精密度剖面拟合,并把结果重排为 EP05
风格的方差分量表。
示例数据为确定性的教学数据,仅用于演示分析流程;正式研究必须使用方案或标准预先规定的实验设计、
接受标准与分析参数。

::: cell

library(ivdtools)
library(readr)

:::

数据格式要求: precision() 最终调用 VCA::anovaVCA(),要求普通
data.frame。用 readr::read_csv() 读入的是
tibble,因此本文统一先转为
data.frame,再把实验因子列(天、批、复孔等)转为因子。

函数概述


函数 主要用途 关键输入或输出


precision() 创建精密度方差分量分析对象 嵌套公式、by
分组、平衡性检查

outlier() 逐样本异常值检测 Grubbs 或 IQR 方法

normal() 逐样本正态性检验 Shapiro-Wilk 等,level
控制置信水平

variance() / vc() 估计方差分量 VC、%Total、SD、CV%,NegVC
在此传入

ci() 各分量 SD/CV 的置信区间 Satterthwaite 近似

profile() Sadler 精密度剖面拟合 10 个候选模型、AIC 选优

list_sadler() 查看 10 个 Sadler 模型 模型公式与类型

summary() / plot() 汇总与绘图 plot(type=...) 选择图形

precision() 创建对象后,分析结果通过
outlier()normal()variance()ci()profile()
逐步累积到对象中,必须重新赋值

precision() -> outlier() -> normal() -> variance() -> ci() -> profile()

只有已执行的分析才出现在 summary() 中,且 plot()
的某些图形依赖前置分析。

示例一:EP05 20×2×2 单样本精密度

读取和核验数据

20×2×2 指 20 天、每天 2 批、每批 2 个重复,共 80 个结果,是 EP05
的经典设计之一:

::: cell

ep05 <- read_csv("./data/precision-ep05.csv", show_col_types = FALSE)
ep05 <- as.data.frame(ep05)
str(ep05)

:::

实验因子列在 CSV 中为整数,读取后转换为因子:

::: cell

ep05$day <- factor(ep05$day)
ep05$run <- factor(ep05$run)
ep05$rep <- factor(ep05$rep)

:::

::: cell

dim(ep05)
summary(ep05$value)

:::

value ~ day/run 表示方差分量按 日间(day)→ 日内的批(run)逐层嵌套。
/ 是嵌套记法,等价于把每个深一层因子视为上一层因子的分组内因子。

创建分析对象并预检

::: cell

p <- precision(ep05, value ~ day/run)
p

:::

平衡性检查输出提示最大/最小单元大小之比;当数据高度不平衡时,VCA
会提示改用 REML。

逐样本做异常值检测和正态性检验:

::: cell

p <- outlier(p, method = "grubbs")

:::

::: cell

p <- normal(p, method = "shapiro")

:::

参数说明: outlier()method 可选 "grubbs"(默认)或
"iqr"alpha 为 Grubbs 显著性水平。normal()method="auto"
会根据样本量选择检验(n≤50 用 Shapiro-Wilk、更大用 Anderson-Darling
等);指定 method="shapiro" 时输出的 W 列才是真正的 Shapiro-Wilk W
统计量。 单样本数据 n=80,两种方式均可接受,本示例显式指定以便展示。

方差分量与置信区间

::: cell

p <- variance(p)

:::

NegVC 参数需要在 variance() 处传入:

::: cell

p <- variance(p, NegVC = TRUE)   # 允许负方差分量(默认 FALSE)

:::

::: cell

p <- ci(p)

:::

ci() 采用 Satterthwaite 有效自由度近似计算各分量 SD 与 CV 的置信区间。

转化为 EP05 术语表

按分量名的嵌套深度把方差分量归入批内、批间、日间,并计算总
SD/CV,进一步把各分量置信区间合并形成带区间的完整 EP05
报告表。统计结果是否可接受必须依据方案预先规定的精密度限值判定。

图形

散点图可用于快速识别测试异常和测值分布情况:

::: cell

plot(p, type = "dot")

:::

::: cell

plot(p, type = "qq")

:::

图形依赖: plot(type="dot")
为按运行顺序的散点(无需前置分析),type="his" 为标准直方图;
type="var" 需要先执行 variance()type="qq" 需要先执行
normal()type="profile" 需要先执行
profile()。绘图前请确认对应分析已运行。

::: cell

summary(p)

:::

示例二:多样本3×5与 Sadler 剖面

读取数据

当需要评价多个浓度水平时,用 by
指定样本分组列,各样本分别估计方差分量:

::: cell

profile_data <- as.data.frame(read_csv(
  "./data/precision-profile.csv",
  show_col_types = FALSE
))
profile_data$sample <- factor(profile_data$sample)
profile_data$day <- factor(profile_data$day)
profile_data$rep <- factor(profile_data$rep)

:::

样本方差分量

::: cell

p2 <- precision(profile_data, value ~ day, by = "sample")
p2 <- variance(p2)

:::

::: cell

p2 <- ci(p2)

:::

比较样本的变异比例,可用于产品优化和检验方案设计:

::: cell

plot(p2, type = "var")

:::

精密度剖面

profile() 对每个方差分量拟合 Sadler 模型族,按 AIC 选出最优模型:

::: cell

list_sadler()

:::

::: cell

p2 <- profile(p2, model.no = 1:10)

:::

::: cell

plot(p2, type = "profile")

:::

参数说明: profile(model.no = 1:10) 指定候选模型序号;...
可传给内部 Sadler 拟合(例如 K)。 每个方差分量至少需要 3
个样本具有有限 SD 才能拟合,因此多样本设计至少应设 3 个浓度水平。
剖面可用于功能灵敏度等分析中预测任意浓度下的
SD/CV(参见《功能灵敏度》)。

本示例 total 与 day 分量最优模型为幂函数型(模型 7),day:rep 分量为恒定
CV 型(模型 2), 符合"SD 随浓度升高而增大、CV 相对稳定"的常见设定。

示例三:多样本多中心(站点)精密度

读取数据

数据包含 2 个站点(site)、3 个样本(sample),每站点每样本 3 天 × 3 批
× 5 复孔:

::: cell

sites_data <- as.data.frame(read_csv(
  "./data/precision-sites.csv",
  show_col_types = FALSE
))
sites_data[] <- lapply(sites_data, function(x)
  if (is.numeric(x) && all(x == round(x))) factor(x) else x)
str(sites_data)

:::

多列分组

by 可接受多个列名,内部按交互作用分组,一次得到所有站点 × 样本组合:

::: cell

p3 <- precision(sites_data, value ~ day/run, by = c("sample", "site"))
p3 <- variance(p3)
names(p3$results)

:::

按站点拆分单独分析

等价的做法是先按站点
split(),再对每个站点子集执行相同的分析参数。当站点间的方差分量
结构预计不同,或需要分别出具报告时,拆分后单独分析更清晰:

::: cell

for (s in c("A", "B")) {
  sub <- sites_data[sites_data$site == s, ]
  ps <- precision(sub, value ~ day/run, by = "sample")
  ps <- variance(ps)
  ps <- ci(ps)
}

:::

注意:
多中心研究应统一分析方案、方差分量模型与报告口径;“先按中心出报告、再合并汇总”
时,务必记录每个中心的原始数据是否纳入、排除标准与因子定义是否一致。

示例四:自定义的更复杂模型

读取数据

除标准的天/批/重复嵌套外,precision() 的公式可以是任意 VCA
嵌套结构,例如再加入操作者
(operator)层:value ~ operator/day/run,即 操作者 → 天 → 批
逐层嵌套:

::: cell

custom_data <- as.data.frame(read_csv(
  "./data/precision-custom.csv",
  show_col_types = FALSE
))
custom_data[] <- lapply(custom_data, function(x)
  if (is.numeric(x) && all(x == round(x))) factor(x) else x)

:::

拟合与解读

::: cell

p4 <- precision(custom_data, value ~ operator/day/run)
p4 <- variance(p4)

:::

结果判读要点

  1. 设计匹配:先明确研究设计的嵌套结构,precision()
    的公式要如实反映实验分层。
  2. 数据格式read_csv 读取后转 data.frame,因子列显式转
    factor,避免 VCA 报错或歧义。
  3. 调用顺序outlier → normal → variance → ci → profile,每次分析重新赋值;绘图依赖前置分析。
  4. 负分量:某层因子水平过少或数据恰好相近时方差分量会被归零,需谨慎解释并在方案中规定处理方式。
  5. CI 适用性:Satterthwaite
    近似在方差分量很少或不平衡时准确性下降,报告时注明方法。
  6. 术语表:把 $results 的数值量(sd_comp/cv_comp/vc)重排为
    EP05 术语表,不要直接使用 展示用字符串 $vc
  7. 可接受判定:统计估计不自动构成合格判定,应与预设精密度限值比较,并由专业人员复核。
基于微信小程序的校园失物招领系统的设计与实现+数据库(毕业设计,包括源码,视频演示),个人经导师指导并认可通过的高分设计项目,评审分98分,项目中的源码都是经过本地编译过可运行的,都经过严格调试,确保可以运行!主要针对计算机相关专业的正在做大作业、毕业设计的学生和需要项目实战练习的学习者,资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。基于微信小程序的校园失物招领系统的设计与实现+数据库(毕业设计,包括源码,视频演示)基于微信小程序的校园失物招领系统的设计与实现+数据库(毕业设计,包括源码,视频演示)基于微信小程序的校园失物招领系统的设计与实现+数据库(毕业设计,包括源码,视频演示)基于微信小程序的校园失物招领系统的设计与实现+数据库(毕业设计,包括源码,视频演示)基于微信小程序的校园失物招领系统的设计与实现+数据库(毕业设计,包括源码,视频演示)基于微信小程序的校园失物招领系统的设计与实现+数据库(毕业设计,包括源码,视频演示)基于微信小程序的校园失物招领系统的设计与实现+数据库(毕业设计,包括源码,视频演示)基于微信小程序的校园失物招领系统的设计与实现+数据库(毕业设计,包括源码,视频演示)基于微信小程序的校园失物招领系统的设计与实现+数据库(毕业设计,包括源码,视频演示)基于微信小程序的校园失物招领系统的设计与实现+数据库(毕业设计,包括源码,视频演示)基于微信小程序的校园失物招领系统的设计与实现+数据库(毕业设计,包括源码,视频演示)基于微信小程序的校园失物招领系统的设计与实现+数据库(毕业设计,包括源码,视频演示)基于微信小程序的校园失物招领系统的设计与实现+数据库(毕业设计,包括源码,视频演示)基于微信小程序的校园失物招领系统的设计与实现+数据库(毕业设计,包括源码,视频演示)基于微信小程序的校园失
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值