细菌生长曲线(logistic / sigmoid),R中有多个解释变量

时间:2017-05-02 00:39:47

标签: r ggplot2 nls non-linear-regression

目标:我希望通过多次治疗获得生长曲线的回归(ggplot曲线和模型参数)。

我有细菌培养物的数据C = {a,b,c,d}在养分来源上生长N = {x,y}。

他们理想化的生长曲线(每小时测量细胞培养物的浊度)看起来像这样: enter image description here

有8条不同的曲线可以获得系数和曲线。我如何一次性完成数据框,将不同的处理方式作为非线性回归的不同组进行处理?

感谢!!!

此问题类似于here发布的未回答的问题。

(理想化数据的源代码,抱歉它不优雅,因为我不是计算机科学家):

a<-1:20
a[1]<-0.01
for(i in c(1:19)){
  a[i+1]<-1.3*a[i]*(1-a[i])
}
b<-1:20
b[1]<-0.01
for(i in c(1:19)){
  b[i+1]<-1.4*b[i]*(1-b[i])
}
c<-1:20
c[1]<-0.01
for(i in c(1:19)){
  c[i+1]<-1.5*c[i]*(1-c[i])
}
d<-1:20
d[1]<-0.01
for(i in c(1:19)){
  d[i+1]<-1.6*d[i]*(1-d[i])
}
sub.data<-cbind(a,b,c,d)
require(reshape2)
data<-melt(sub.data, value.name = "OD600")
data$nutrition<-rep(c("x", "y"), each=5, times=4)
colnames(data)[1:2]<-c("Time", "Culture")


ggplot(data, aes(x = Time, y = OD600, color = Culture, group=nutrition)) +
  theme_bw() + xlab("Time/hr") + ylab("OD600") +
  geom_point() +  facet_wrap(~nutrition, scales = "free")

1 个答案:

答案 0 :(得分:2)

如果您熟悉来自group_by的{​​{1}}功能(包含在dplyr中),那么您可以按文化和营养对数据进行分组,并使用{{1}为每个群组创建模型}。我认为这vignette正在达到你想要完成的目标。以下是一站式代码:

tidyverse

如果没有人去,你可以分开broom以便更好地理解。我使用的是GAM,但是你可以用你想要的任何型号替换它,包括sigmoid。

enter image description here