You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言drc包中计算拟合曲线与原始数据的相关系数?

计算drc包中拟合曲线与原始数据的相关系数

嘿,我来帮你搞定这个问题!在R的drc包中计算拟合曲线的预测值(也就是你说的“拟合结果”)和原始数据之间的相关系数其实很简单,分几步就能完成,我给你一步步拆解,再配个实际的例子,你一看就明白。

步骤1:确保你已经拟合了drc剂量-响应模型

首先你得有一个用drm()函数拟合好的模型对象。如果还没拟合,先加载drc包,用你的数据跑模型。这里我用drc内置的ryegrass数据集做示例:

library(drc)
# 加载示例数据集
data(ryegrass)
# 拟合四参数logistic剂量-响应模型
mod <- drm(rootl ~ conc, data = ryegrass, fct = LL.4())

步骤2:提取拟合值和原始响应数据

  • 拟合值(模型对每个原始数据点的预测结果)可以直接用fitted()函数从模型对象中提取
  • 原始响应变量可以从你的原始数据集中获取,或者直接从模型对象里提取(模型对象的$y属性就是原始响应值)

代码示例:

# 提取模型的拟合预测值
fitted_values <- fitted(mod)
# 提取原始数据的响应值(两种方式选一种就行)
original_values <- ryegrass$rootl  # 从原始数据集提取
# original_values <- mod$y  # 从模型对象提取

步骤3:计算相关系数

用R基础包的cor()函数就能计算相关系数,你可以根据数据特点选择合适的方法:

  • method = "pearson":默认的皮尔逊相关系数,适合变量呈线性关系的情况
  • method = "spearman":斯皮尔曼秩相关系数,非参数方法,适合数据不满足正态分布或者存在异常值的情况
  • method = "kendall":肯德尔τ相关系数,也是非参数方法,适合小样本数据

代码示例:

# 计算皮尔逊相关系数
pearson_correlation <- cor(original_values, fitted_values, method = "pearson")
# 计算斯皮尔曼秩相关系数
spearman_correlation <- cor(original_values, fitted_values, method = "spearman")

# 打印结果
cat("皮尔逊相关系数:", round(pearson_correlation, 4), "\n")
cat("斯皮尔曼秩相关系数:", round(spearman_correlation, 4), "\n")

额外小提示

如果想查看模型的拟合优度(比如R²),可以用summary(mod)查看输出结果,里面会包含相关的拟合统计量,但这和拟合值与原始数据的相关系数是不同的指标哦——相关系数衡量的是两者的线性关联程度,而R²衡量的是模型解释的变异比例。

内容的提问来源于stack exchange,提问作者Vitor Muller Anunciato

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:24:15