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() 함수를 사용하는 방법