我有一个简单的数据框,记录了不同剂量下药物治疗的反应测量值:
我可以使用以下代码绘制这些点,并获得我想要的可视化的基本框架:
我也尝试了这个链接提供的解决方案:将sigmoid曲线拟合到oxy-Hb数据上。
在这种情况下,我收到以下错误:
drug <- c("drug_1", "drug_1", "drug_1", "drug_1", "drug_1",
"drug_1", "drug_1", "drug_1", "drug_2", "drug_2", "drug_2",
"drug_2", "drug_2", "drug_2", "drug_2", "drug_2")
conc <- c(100.00, 33.33, 11.11, 3.70, 1.23, 0.41, 0.14,
0.05, 100.00, 33.33, 11.11, 3.70, 1.23, 0.41, 0.14, 0.05)
mean_response <- c(1156, 1833, 1744, 1256, 1244, 1088, 678, 489,
2322, 1867, 1333, 944, 567, 356, 200, 177)
std_dev <- c(117, 317, 440, 200, 134, 38, 183, 153, 719,
218, 185, 117, 166, 167, 88, 50)
df <- data.frame(drug, conc, mean_response, std_dev)
我可以使用以下代码绘制这些点,并获得我想要的可视化的基本框架:
p <- ggplot(data=df, aes(y=mean_response, x= conc, color = drug)) +
geom_pointrange(aes(ymax = (mean_response + std_dev), ymin = (mean_response - std_dev))) +
scale_x_log10()
p
我接下来想要做的事情是在这些数据上添加一个S形曲线,以适应每种药物的绘制点。然后,我想计算此曲线的EC50值。 我意识到我的数据可能没有覆盖整个S形曲线的范围,但我希望用我所拥有的最好的估计值。此外,drug_1的最终点不符合预期的S形曲线趋势,但这实际上并不出乎意料,因为药物所在的溶液在高浓度下可以抑制反应(每种药物都在不同的溶液中)。我想将此点从数据中排除。
我在拟合S形曲线时遇到了困难。我已经查看了一些其他解决方案以拟合S形曲线,但都无法奏效。
有一个与我的问题非常接近的帖子:(sigmoid)curve fitting glm in r
基于此,我尝试了:
p + geom_smooth(method = "glm", family = binomial, se = FALSE)
出现以下错误,并似乎默认绘制直线:
`geom_smooth()` using formula 'y ~ x'
Warning message:
Ignoring unknown parameters: family
我也尝试了这个链接提供的解决方案:将sigmoid曲线拟合到oxy-Hb数据上。
在这种情况下,我收到以下错误:
Computation failed in `stat_smooth()`:
Convergence failure: singular convergence (7)
同时也没有任何线条被添加到图表中。
我已经试图查找这些错误的原因,但似乎无法找到与我的数据相符合的原因。
非常感谢任何提供帮助的人!
ggplot
中尝试这样做:这会增加另一个步骤,使故障排除更加困难。 - Ben Bolker