如何在R语言中绘制剂量效应图并获取剂量方程与R²值
在R语言中实现剂量反应曲线绘制、方程推导与指标计算
数据准备
你提供的原始数据可直接使用,这里以D137组数据为例:
# Raw Data μM <- c(0.01, 0.03, 0.1, 0.3, 1, 3, 10, 30) DMSO <- c(97.01, 98.43, 98.29, 97.66, 96.51, 88.39, 38.54, 2.63) # D137 dat <- data.frame(μM, DMSO)
1. 拟合剂量反应模型(非线性logistic回归)
剂量反应曲线通常呈S型,推荐用四参数logistic模型拟合,可借助drc包(专门用于剂量反应分析)实现:
# 安装并加载drc包 install.packages("drc") library(drc) # 拟合四参数logistic模型 model <- drm(DMSO ~ μM, data = dat, fct = LL.4()) summary(model)
- 模型输出包含参数估计值、标准误,以及
R-squared(拟合优度)。 - 四参数模型公式为:
[ y = \frac{d - a}{1 + (x/c)^b} + a ]
参数说明:a:曲线下限(最低活性值)d:曲线上限(最高活性值)c:EC50值(活性达50%时的浓度)b:曲线斜率
2. 绘制剂量反应曲线
用ggplot2绘制带拟合曲线的图表,x轴取对数(符合此类图表常规展示逻辑):
# 安装并加载ggplot2 install.packages("ggplot2") library(ggplot2) # 生成拟合曲线的预测数据 new_data <- data.frame(μM = seq(min(dat$μM), max(dat$μM), length.out = 100)) new_data$pred <- predict(model, newdata = new_data) # 绘制图表 ggplot(dat, aes(x = μM, y = DMSO)) + geom_point(size = 3, color = "#2c3e50") + # 原始数据点 geom_line(data = new_data, aes(y = pred), color = "#e74c3c", linewidth = 1) + # 拟合曲线 scale_x_log10(breaks = dat$μM) + # x轴设为对数刻度,显示原始浓度点 labs(x = "浓度 (μM)", y = "活性 (%)", title = "剂量反应曲线") + theme_bw() + theme(plot.title = element_text(hjust = 0.5))
3. 提取剂量方程与R平方值
从拟合模型中提取参数并构建可读方程,同时获取R平方:
# 提取模型参数 params <- coef(model) a <- params[1] b <- params[2] c <- params[3] d <- params[4] # 构建剂量方程 dose_equation <- paste0("y = ", round(d - a, 2), "/(1 + (x/", round(c, 4), ")^", round(b, 2), ") + ", round(a, 2)) cat("剂量方程:", dose_equation, "\n") # 获取R平方值 r_squared <- summary(model)$r.squared cat("R平方值:", round(r_squared, 4), "\n")
补充:线性回归拟合(若Excel使用对数转换后的线性拟合)
如果Excel中是对log(浓度)和log(活性)做线性拟合,可执行以下代码:
# 准备对数转换后的数据 log_dat <- data.frame(log_μM = log(dat$μM), log_DMSO = log(dat$DMSO)) # 拟合线性模型 linear_model <- lm(log_DMSO ~ log_μM, data = log_dat) summary(linear_model) # 提取线性方程与R平方 linear_eq <- paste0("log(y) = ", round(coef(linear_model)[1], 2), " + ", round(coef(linear_model)[2], 2), "*log(x)") cat("线性回归方程:", linear_eq, "\n") cat("线性回归R平方:", round(summary(linear_model)$r.squared, 4), "\n")
注意:线性拟合仅适配数据的线性段,整体拟合效果通常弱于非线性logistic模型。
内容的提问来源于stack exchange,提问作者JeongSoo Na
相关产品推荐
相关产品推荐

