Skip to content

R (프로그래밍 언어) 다중검정보정 #

Find similar titles

3회 업데이트 됨.

Edit
  • 최초 작성자
    Jaeng
  • 최근 업데이트
    JehongLee

Structured data

Category
Programming

입력데이터 #

입력데이터는 아래와 같은 포맷으로 준비한다. 중복이 없는 ID열과 보정할 p-value가 있는 열이 있어야 한다. 데이터 준비가 완료되면 탭으로 구분된 txt 파일로 테이블을 저장한다.

Image

R 콘솔창에서 작업 경로(working directory)를 데이터 파일이 있는 곳으로 이동한 후 아래와 같이 입력한다.

 ! R
 > data <- read.table("example_MultipleTestAdjustment.txt", header=T, sep="\t", row.names=1)
 > data
     Control  Sample FoldChange p.value
FJ969516   0.099   1.379      5.749   0.087
GQ377049   0.245   0.109   -919.649   0.000
FJ969515  20.411  12.445      1.176   0.379
GQ117044  12.429   9.754     -4.220   0.001
FJ969512   9.738  10.306    -34.151   0.001
FJ969517  33.733  36.172    -34.493   0.000
FJ969513   9.506   4.252      1.237   0.000
FJ969514  10.810   8.623     -4.484   0.000
CY095672  65.780  63.687    -15.632   0.000
AF342823   4.214   4.875    -18.353   0.001
CY095674   5.502   4.556    -21.833   0.000
GQ229365 294.564 297.263    -60.491   0.000
CY095676   7.294   4.554      3.594   0.000
CY116052   0.022   0.010     -1.190   0.538
GQ229263   0.025   0.089     -1.171   0.216
CY095679   6.249   6.009     -6.930   0.000
LS119673   0.115   0.331     38.653   0.000
LH216717  93.911 136.500    -63.858   0.000
LS319131   0.340   0.143      4.773   0.035
LS417670   0.025   0.075     11.592   0.008

'data' 라는 변수에 저장된 테이블에서 p.value 라는 컬럼만 선택하기 위해 '$' 구분자를 이용한다

> data$p.value
 [1] 0.087 0.000 0.379 0.001 0.001 0.000 0.000 0.000 0.000 0.001 0.000 0.000 0.000 0.538 0.216 0.000 0.000
[18] 0.000 0.035 0.008

다중검정보정 기능을 수행하는 R 함수는 'p.adjust' 이다. p.adjust 로 이동하면 자세한 메뉴얼을 확인할 수 있다. 이 함수에 어떤 값들을 보정할 것인지, 그리고 어떤 method로 보정할 것인지 두 가지만 지정해 주면 된다. 'p.adjust.methods' 라고 입력하면 어떤 method를 사용할 수 있는지 확인할 수 있다(대소문자 주의).

> p.adjust.methods
[1] "holm"       "hochberg"   "hommel"     "bonferroni" "BH"         "BY"         "fdr"        "none"

'data'에 있는 데이터 중에서 p.value 컬럼에 있는 값들을 보정하려면 아래와 같이 입력한다.

> p.adjust(data$p.value, 'BH')
 [1] 0.102352941 0.000000000 0.398947368 0.001428571 0.001428571 0.000000000 0.000000000 0.000000000
 [9] 0.000000000 0.001428571 0.000000000 0.000000000 0.000000000 0.538000000 0.240000000 0.000000000
[17] 0.000000000 0.000000000 0.043750000 0.010666667

소수점 아래 수가 너무 많을 경우 round() 기능으로 반올림 하여 끊을수 있다. 예를들어 소수점 세째자리에서 반올림할 경우 아래와 같이 입력한다.

> round(p.adjust(data$p.value, 'BH'),3)
  [1] 0.102 0.000 0.399 0.001 0.001 0.000 0.000 0.000 0.000 0.001 0.000 0.000 0.000 0.538 0.240 0.000 0.000
[18] 0.000 0.044 0.011

만들어진 결과를 data에 추가할 때는 '$' 구분자를 입력하여 새로 추가할 컬럼 이름을 쓰고 결과가 추가 되도록한다.

> data$FDR <- round(p.adjust(data$p.value, 'BH'),3)
> data
     Control  Sample FoldChange p.value   FDR
FJ969516   0.099   1.379      5.749   0.087 0.102
GQ377049   0.245   0.109   -919.649   0.000 0.000
FJ969515  20.411  12.445      1.176   0.379 0.399
GQ117044  12.429   9.754     -4.220   0.001 0.001
FJ969512   9.738  10.306    -34.151   0.001 0.001
FJ969517  33.733  36.172    -34.493   0.000 0.000
FJ969513   9.506   4.252      1.237   0.000 0.000
FJ969514  10.810   8.623     -4.484   0.000 0.000
CY095672  65.780  63.687    -15.632   0.000 0.000
AF342823   4.214   4.875    -18.353   0.001 0.001
CY095674   5.502   4.556    -21.833   0.000 0.000
GQ229365 294.564 297.263    -60.491   0.000 0.000
CY095676   7.294   4.554      3.594   0.000 0.000
CY116052   0.022   0.010     -1.190   0.538 0.538
GQ229263   0.025   0.089     -1.171   0.216 0.240
CY095679   6.249   6.009     -6.930   0.000 0.000
LS119673   0.115   0.331     38.653   0.000 0.000
LH216717  93.911 136.500    -63.858   0.000 0.000
LS319131   0.340   0.143      4.773   0.035 0.044
LS417670   0.025   0.075     11.592   0.008 0.011

그리고 아래와 같이 입력하면 'data' 에 저장된 테이블이 "output.txt"라는 파일로 저장된다. 탭으로 구분되어 저장되므로 엑셀에서 열면 그대로 확인 가능하다.

> write.table(data, 'output.txt', sep="\t")

Suggested Pages #

0.0.1_20230725_7_v68