You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何计算QQP分位数对比图中95%置信区间外的点数?

如何统计QQP图95%置信区间外的点数

当然可行!car包中的qqp函数其实会返回绘图背后的所有关键数据,我们可以利用这些数据轻松找出并统计95%置信区间(CI)外的点。下面一步步来实现:

步骤1:准备数据与拟合分布

先运行你提供的模拟和拟合代码:

require(MASS)
require(car)

# 模拟60个泊松分布值
Resp <- rpois(60, 1)
# 拟合负二项分布
nbinom <- fitdistr(Resp, "Negative Binomial")

步骤2:捕获QQP图的返回数据

调用qqp时,把返回结果赋值给一个变量——这个变量包含了观测分位数、理论分位数以及置信区间的上下限:

# 绘制QQP图并保存返回数据
qqp_result <- qqp(Resp, "nbinom", size = nbinom$estimate[[1]], mu = nbinom$estimate[[2]])

你可以用str(qqp_result)查看这个返回对象的结构,核心元素包括:

  • y:观测分位数(对应原始数据的排序后值)
  • lower:95%置信区间的下限
  • upper:95%置信区间的上限

步骤3:找出并统计CI外的点

通过简单的逻辑比较,就能定位超出置信区间的点:

# 找出超出CI的点的索引
outliers_index <- which(qqp_result$y < qqp_result$lower | qqp_result$y > qqp_result$upper)
# 提取这些点的原始数值
outliers_values <- Resp[outliers_index]
# 统计超出CI的点的数量
outliers_count <- length(outliers_index)

封装成可复用函数

如果需要多次使用,可以把上述逻辑封装成一个函数,方便调用:

count_qqp_outliers <- function(data, dist_name, ...) {
  # 生成QQP图并获取数据
  qqp_res <- qqp(data, dist_name, ...)
  # 筛选超出95%CI的点
  out_idx <- which(qqp_res$y < qqp_res$lower | qqp_res$y > qqp_res$upper)
  # 返回结果列表
  list(
    outliers_index = out_idx,
    outliers_values = data[out_idx],
    outliers_count = length(out_idx)
  )
}

测试函数

用你之前的模拟数据测试这个函数:

result <- count_qqp_outliers(Resp, "nbinom", size = nbinom$estimate[[1]], mu = nbinom$estimate[[2]])

# 查看超出CI的点数量
cat("置信区间外的点数:", result$outliers_count, "\n")
# 查看这些点的具体数值
cat("置信区间外的点数值:", result$outliers_values, "\n")

注意事项

  • 不同分布的qqp调用参数会有差异,比如正态分布只需要meansd,负二项需要sizemu,调用函数时要根据分布传入正确的参数
  • 如果你使用的car包版本较旧,qqp的返回结构可能略有不同,建议先用str(qqp_result)确认元素名称后再提取

内容的提问来源于stack exchange,提问作者Leprechault

火山引擎 最新活动