【ggplot2/R】ELISA의 측정 결과로부터 4계수 로지스틱 곡선(4-parameter logistic curve)을 쓴다

R을 사용하여 ELISA 측정값에서 4계수 로지스틱 곡선을 그리는 방법을 소개합니다.
ggplot() 함수와 stat_function() 함수를 조합하여 작성합니다.

ELISA 데이터



이번에 사용할 데이터 (ELISA.csv)입니다.


Concentration
Absorbance


10
3.0802

3.333333333
3.0151

1
2.5858

0.333333333
1.5019

0.1
0.5901

0.033333333
0.207

0.01
0.0621

0
0.0039


필요한 패키지



R을 사용하여 4계수 로지스틱 회귀 분석을 위해 drc 패키지를 설치하고 로드합니다.
그리고 dplyr와 ggplot2를 일괄 적으로 읽으려면 tidyverse도 읽어 둡니다.

라이브러리 로드
library(tidyverse)
library(drc)

데이터 로드 및 확인



read.csv()로 ELISA의 CSV 데이터를 읽고 glimpse()로 내용을 확인해 둡니다.

데이터를 조사하기 위한 첫 번째 플롯
ELISA <- read.csv("ELISA.csv")
glimpse(ELISA)

산점도 그리기



ggplot2에서 우선 산점도를 그려 보겠습니다.

데이터를 조사하기 위한 첫 번째 플롯
ggplot(ELISA, aes(x = Concentration, y = Absorbance)) +
  geom_point() +
  scale_x_log10()



4계수 로지스틱 회귀 분석 모델 만들기



drc 패키지의 drm()을 사용하여 4계수 로지스틱 회귀 분석 모델을 만듭니다.
y = d+\frac{c-d}{1+(\frac{e}{x})^b} \\\

drm() 함수의 fct로 LL.4()를 지정하여 회귀 모델 L4p를 만듭니다.
네 개의 매개 변수 (b, c, d, e)는 만든 모델의 coefficients 목록에 있습니다.
따라서 네 개의 매개 변수를 회귀 모델 L4pcoefficients에서 꺼냅니다.

drm()을 사용하여 4계수 로지스틱 회귀 분석 모델 만들기
L4p <- drm(Absorbance ~ Concentration, data = ELISA, fct = LL.4())
a <- L4p$coefficients #回帰モデルから係数を取り出す
a #回帰係数を表示
a[1] 
a[2] 
a[3] 
a[4] 

실행 결과는 이렇게 됩니다.
> L4p <- drm(Absorbance ~ Concentration, data = ELISA, fct = LL.4())
> a <- L4p$coefficients #回帰モデルから係数を取り出す
> a #回帰係数を表示
b:(Intercept) c:(Intercept) d:(Intercept) e:(Intercept) 
-1.2631086189  0.0008242024  3.1637420197  0.3374669485 
> a[1] 
b:(Intercept) 
    -1.263109 
> a[2] 
c:(Intercept) 
 0.0008242024 
> a[3] 
d:(Intercept) 
     3.163742 
> a[4] 
e:(Intercept) 
    0.3374669

마지막으로 stat_function()으로 4계수 로지스틱 회귀를 그린다



먼저 만든 산점도에 분석 모델에서 추정한 4개의 회귀 계수와 stat_function() 함수를 사용하여 회귀 곡선을 추가합니다.fun = function(x) 다음에 x 함수를 그립니다.

stat_function()으로 4계수 로지스틱 회귀를 그립니다.
ggplot(ELISA, aes(x = Concentration, y = Absorbance)) +
  geom_point() +
  stat_function(fun = function(x) a[3] + (a[2] - a[3]) / (1 + (a[4] / x)^a[1])) +
  scale_x_log10()

이렇게 하면


이런 식으로 4계수 로지스틱 회귀 곡선을 그릴 수 있었습니다.

최종 스크립트



ELISA (4 계수 로지스틱 회귀)
#ELISAの測定値で4係数ロジスティック回帰分析

#Rをキレイにしておく
rm(list = ls())

#ライブラリの読み込み
library(tidyverse)
library(drc)

#データの読み込みと内容の確認
ELISA <- read.csv("ELISA.csv")
glimpse(ELISA)

#データを調べるための最初のプロット
ggplot(ELISA, aes(x = Concentration, y = Absorbance)) +
  geom_point() +
  scale_x_log10() 

#drm()を使って4係数ロジスティック回帰分析モデルを作る
L4p <- drm(Absorbance ~ Concentration, data = ELISA, fct = LL.4())
a <- L4p$coefficients #回帰モデルから係数を取り出す
a #回帰係数を表示
a[1] 
a[2] 
a[3] 
a[4] 

#stat_function()で4係数ロジスティック回帰を描く
ggplot(ELISA, aes(x = Concentration, y = Absorbance)) +
  geom_point() +
  stat_function(fun = function(x) a[3] + (a[2] - a[3]) / (1 + (a[4] / x)^a[1])) +
  scale_x_log10()

좋은 웹페이지 즐겨찾기