首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在我的ggplot上绘制逻辑增长曲线

如何在我的ggplot上绘制逻辑增长曲线
EN

Stack Overflow用户
提问于 2020-07-04 21:52:50
回答 2查看 358关注 0票数 1

我有一些数据,看起来像是逻辑增长曲线。我可以用geom_smooth在上面画一条黄土曲线,但我想要拟合一条合适的logistic曲线

代码语言:javascript
复制
data <- data.frame(conc = c(10, 1, 0.1, 0.01, 0.001, 1e-04, 1e-05, 1e-06, 1e-07, 1e-08, 
                            1e-09, 10, 1, 0.1, 0.01, 0.001, 1e-04, 1e-05, 1e-06, 1e-07, 1e-08, 
                            1e-09, 10, 1, 0.1, 0.01, 0.001, 1e-04, 1e-05, 1e-06, 1e-08, 1e-09, 
                            10, 1, 0.1, 0.01, 0.001, 1e-04, 1e-05, 1e-06, 1e-08, 1e-09, 1e-10),
                   value = c(22832, 26910, 9303, 4128, 521, 44, 64, 31, 50, 39, 284, 19993, 
                             24205, 9230, 4030, 447, 42, 51, 175, 38, 35, 161, 23072, 27382, 
                             7036, 2416, 320, 58, 30, 37, 40, 110, 26630, 28568, 6262, 2854, 
                             314, 102, 50, 39, 34, 77, 30))
ggplot(data, aes(x=conc, y=value)) +
  geom_point() +
  geom_smooth() +
  scale_x_continuous(trans = 'log10')

我已经仔细阅读并尝试了以下内容:

stat_smooth(method="glm",method.args=list(family=“二项式”),se=FALSE)`

但是我一直收到这个错误:

代码语言:javascript
复制
geom_smooth()` using formula 'y ~ x'
Warning message:
Computation failed in `stat_smooth()`:
y values must be 0 <= y <= 1

我的目标是这样的:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-04 22:03:12

就像这样?

代码语言:javascript
复制
ggplot(data, aes(x=conc, y=value/max(value))) +
  geom_point() +
  # geom_smooth() +
  # scale_x_continuous(trans = 'log10')
  stat_smooth(formula = "y ~ x", method = "glm", 
              method.args = list(family="quasibinomial"), se = T) +
  scale_y_continuous(labels = function(x) x * max(data$value))

票数 1
EN

Stack Overflow用户

发布于 2020-07-04 22:28:47

要拟合四参数逻辑曲线,您可以执行以下操作:

代码语言:javascript
复制
library(ggplot2)
library(nlme)

ggplot(data, aes(x=conc, y=value)) +
  geom_point() +
  geom_smooth(
    method = "nls", formula = y ~ SSfpl(log(x), A, B, xmid, scal),
    se = FALSE
  ) 

但是你的数据有一个奇异的梯度,因此产生了一个错误。如果符合value的对数,则此方法有效

代码语言:javascript
复制
ggplot(data, aes(x=conc, y=log(value))) +
  geom_point() +
  geom_smooth(
    method = "nls", formula = y ~ SSfpl(log(x), A, B, xmid, scal),
    se = FALSE
  ) 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62729981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档