如何在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
相关产品推荐
相关产品推荐

