R で分位点正規化を実行する方法
統計学における分位点正規化は、統計的特性の観点から 2 つの分布を同一にする方法です。
次の例は、R で分位正規化を実行する方法を示しています。
例: R での分位点正規化
2 つの列を含む次のデータ フレームを 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
sapply()関数とquantile()関数を使用して、x と y の分位数を計算できます。
#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 は分位点で正規化されていると言えます。言い換えれば、2 つの分布は統計的特性の点で同一になります。
追加リソース
次のチュートリアルでは、R で他の一般的なタスクを実行する方法について説明します。