R에서 분위수 정규화를 수행하는 방법


통계에서 분위수 정규화는 통계적 특성 측면에서 두 분포를 동일하게 만드는 방법입니다.

다음 예에서는 R에서 분위수 정규화를 수행하는 방법을 보여줍니다.

예: R의 분위수 정규화

두 개의 열을 포함하는 R에서 다음 데이터 프레임을 생성한다고 가정합니다.

 #make this example reproducible
set. seeds (0)

#create data frame with two columns
df <- data. frame (x=rnorm(1000),
                 y=rnorm(1000))

#view first six rows of data frame
head(df)

           xy
1 1.2629543 -0.28685156
2 -0.3262334 1.84110689
3 1.3297993 -0.15676431
4 1.2724293 -1.38980264
5 0.4146414 -1.47310399
6 -1.5399500 -0.06951893

x와 y에 대한 분위수를 계산하기 위해 sapply()Quantile() 함수를 사용할 수 있습니다.

 #calculate quantiles for x and y
sapply(df, function(x) quantile(x, probs = seq(0, 1, 1/4)))

               xy
0% -3.23638573 -3.04536393
25% -0.70845589 -0.73331907
50% -0.05887078 -0.03181533
75% 0.68763873 0.71755969
100% 3.26641452 3.03903341

x와 y의 분위수 값은 비슷하지만 동일한 값은 아닙니다.

예를 들어 x의 25번째 백분위수 값은 -0.708 이고 y의 25번째 백분위수 값은 -0.7333 입니다.

분위수 정규화를 수행하려면 R의 preprocessCore 패키지에 있는 Normalize.Quantiles() 함수를 사용할 수 있습니다.

 library (preprocessCore)

#perform quantile normalization
df_norm <- as. data . frame ( normalize.quantiles ( as.matrix (df)))

#rename data frame columns
names(df_norm) <- c(' x ', ' y ')

#view first six row of new data frame
head(df_norm)

           xy
1 1.2632137 -0.28520228
2 -0.3469744 1.82440519
3 1.3465807 -0.16471644
4 1.2692599 -1.34472394
5 0.4161133 -1.43717759
6 -1.6269731 -0.07906793

그런 다음 다음 코드를 사용하여 x와 y에 대한 분위수를 다시 계산할 수 있습니다.

 #calculate quantiles for x and y
sapply(df_norm, function(x) quantile(x, probs = seq(0, 1, 1/4)))

               xy
0% -3.14087483 -3.14087483
25% -0.72088748 -0.72088748
50% -0.04534305 -0.04534305
75% 0.70259921 0.70259921
100% 3.15272396 3.15272396

이제 x와 y에 대한 분위수는 동일합니다.

x와 y가 분위수 정규화되었다고 말할 수 있습니다. 즉, 두 분포는 이제 통계적 특성 측면에서 동일합니다.

추가 리소스

다음 튜토리얼에서는 R에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.

R에서 데이터를 정규화하는 방법
R에서 백분위수를 계산하는 방법
R에서 Quantile() 함수를 사용하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다