2017-05-02 19 views
0

목표 : 여러 치료법을 사용한 성장 곡선의 회귀 분석 (ggplot 곡선 및 모델 매개 변수)을 얻고 싶습니다.여러 설명 변수가있는 박테리아 성장 곡선 (logistic/sigmoid) R

나는 영양원 N = {x, y}에서 자라는 세균 배양 C = {a, b, c, d}에 대한 데이터를 가지고 있습니다.

그들의 이상적인 성장 곡선은 (세포 배양 매 시간마다의 탁도를 측정)과 같이 보일 : 에 대한 계수 곡선을 얻기 위해 8 개 개의 다른 곡선이 있습니다 enter image description here

. 비선형 회귀에 대해 다른 그룹으로 다른 치료법을 먹이면 내 데이터 프레임을 한 번에 어떻게 처리 할 수 ​​있습니까?

감사합니다 !!!

이 질문은 대답없는 질문과 비슷한 내용입니다. 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") 
+0

넌 (http://kyrcha.info/2012/07/08/tutorials-fitting-a-sigmoid-function-in-r/ [R의 시그 모이 드 곡선 피팅] 검사 할 수도) –

답변

0

당신이 (tidyverse에 포함) dplyr에서 group_by 기능에 대해 잘 알고 있다면, 당신은 그룹화 할 수 문화와 영양에 의한 자료를 만들고 각 그룹에 대한 모델을 broom을 사용하여 만든다. 제 생각에 이건 vignette이 당신이 성취하려는 것을 정확히 얻고 있다고 생각합니다. 하나는 이동하지 않고 확인하는 경우

library(tidyverse) 
library(broom) 
library(mgcv) #For the gam model 

data %>% 
     group_by(Culture, nutrition) %>% 
     do(fit = gam(OD600 ~ s(Time), data = ., family=gaussian())) %>% # Change this to whatever model you want (e.g., non-linear regession, sigmoid) 
     #do(fit = lm(OD600 ~ Time, data = .,)) %>% # Example using linear regression 
     augment(fit) %>% 
     ggplot(aes(x = Time, y = OD600, color = Culture)) + # No need to group by nutrition because that is broken out in the facet_wrap 
     theme_bw() + xlab("Time/hr") + ylab("OD600") + 
     geom_point() + facet_wrap(~nutrition, scales = "free") + 
     geom_line(aes(y = .fitted, group = Culture)) 

는, 더 나은 이해를 위해 %>% 떨어져 휴식 : 여기에 모두 한 가지의 코드입니다. 여기에 맞는 GAM을 사용했지만 S 자형을 포함하여 원하는 모델로 교체 할 수 있습니다.

enter image description here