Энэхүү бичвэрээр эерэг утгуудтай өгөгдлийг хэвийн тархалттай болгоход ашигладаг Бокс-Коксын хувиргалтыг (Box-Cox Transformation) санамсаргүй хувьсагчийн хувиргалт, регрессийн шугаман загвар, хамгийн их үнэний ортой үнэлэлт гэсэн магадлалын онол ба математикийн статистикийн уг үндсээс нь тайлбарлана. Мөн эцэст нь тус хувиргалтыг R програм дээр ажиллуулахыг жишээгээр харуулна.

Санамсаргүй хувьсагчийн хувиргалт

\(X\) тасралтгүй санамсаргүй хувьсагчийг түүний утгын олонлог дээр монотон бөгөөд 1:1 чанартай \(g(\cdot)\) функцээрх хувиргалтаар \(Y=g(X)\) гэж гарах \(Y\) санамсаргүй хувьсагчийн магадлалын нягтын функцийг \[f_Y(y)=f_X(g^{-1}(y))\left|\frac{d}{dy}g^{-1}(y)\right|\]томъёогоор олдог.

Хэрэв дээрх хувиргалтыг нөгөө чиглэл рүү авч үзвэл дээрх томъёо дараах хэлбэртэй болно [1].

\[f_X(x)=f_Y(g(x))\left|\frac{d}{dx}g(x)\right|\]

Томъёог гаргахад урвуу функцийн уламжлалын томъёо ашиглана.

Дээрх томъёо нь хувиргалтын функц ба хувиргалтаар гарах "шинэ" хувьсагчийн тархалтыг мэдэж буй тохиолдолд "хуучин" хувьсагчийн тархалтыг олох аргыг заана.

Регрессийн шугаман загвар ба хувиргалт

Ийнхүү санамсаргүй хувьсагчийг хувиргахад түүний тархалт өөрчлөгддөг. Нөгөө талд статистикийн тодорхой загварууд хувьсагчийн тархалт дээр ямар нэг шаардлага тавих явдал байдаг. Тухайлбал \(Y=\beta_0+\beta X\) шугаман загварын хувьд \(U=Y-(\beta_0+\beta X)\) үлдэгдлийг хэвийн тархалттай гэсэн шаардлага тавьдаг [2]. Энэхүү шаардлага нь загварын талаарх янз бүрийн таамаглал шалгахад ашиглах шинжүүрийн статистикийн тархалтыг олох үндэс болдог.

\(Y=\beta_0+\beta X\) шугаман загварын үлдэгдэл ямар тархалттай байх нь \(Y\) хувьсагч ямар тархалттай байхаас шалтгаална. Иймд \(U=Y-(\beta_0+\beta X)\) үлдэгдэл хэвийн тархалттай байхын тулд \(Y\) ямар тархалттай байх хэрэгтэй вэ, цаашилбал үүний тулд \(Y\) хувьсагчийн тархалтыг хэрхэн өөрчлөх буюу тус хувьсагчийг ямар хувиргалтаар хувиргаж тархалтыг нь "засах" вэ гэсэн асуулт гарна.

Ерөнхийдөө зөвхөн регрессийн шугаман загвар гэлтгүй дисперсийн шинжилгээ (ANOVA), \(t\)-шинжүүр зэрэг статистикийн олон арга өгөгдлийг хэвийн тархалттай байхыг шаарддаг [2] бөгөөд шаардлагыг нь хангасан өгөгдөл дээр статистик шинжилгээ хийх нь үүнээс гарах дүгнэлтийн үнэн бодит байдалд ач холбогдолтой.

Бокс-Коксын хувиргалт

Бокс-Коксын хувиргалт буюу Box-Cox Transformation [3] нь хэвийн бус тархалттай өгөгдлийн тархалтыг хэвийн (Гауссын) тархалт руу шилжүүлэхэд ашигладаг арга юм. Үүний гол логик нь өгөгдлийн дисперсийг тогтворжуулж, тархалтын ассимметр байдлыг (skewness) засахад оршдог.

Бокс-Коксын хувиргалт нь \(\lambda\) гэсэн ганц параметрээс хамаардаг дараах функцээр илэрхийлэгдэнэ.

\[
y(\lambda) = 
\begin{cases}
\frac{x^\lambda - 1}{\lambda}, & \text{хэрэв } \lambda \neq 0 \\
\ln(x), & \text{хэрэв } \lambda = 0
\end{cases}
\]

Энд \(x\) нь заавал эерэг утгатай буюу \(x > 0\) байх ёстой. Хэрэв өгөгдөл тэг эсвэл сөрөг утга агуулсан бол бүх утга дээр тодорхой тогтмол тоог \(x + c\) гэж нэмэн тус шаардлагатай нийцүүлсэний дараа хувиргалт хийнэ.

Бокс-Коксын хувиргалтын параметрийн үүрэг

Тус хувиргалт нь янз бүрийн хувиргалтуудыг зангидсан. Тухайлбал \(\lambda\) параметрийн утгыг дараах хувилбаруудаар сонгосон үед үүнтэй харгалзах өөр өөр хэлбэртэй хувиргалт тодорхойлогдох бөгөөд эдгээрийн заримыг дараах хүснэгтээс харж болно.

Бокс-Коксын хувиргалтын \(\lambda\) параметрийн янз бүрийн утгатай харгалзах хувиргалтын хэлбэрүүд
\(\lambda\) Хувиргалт Томъёо
1 Зөвхөн байршил шилжинэ \(x-1\)
2 Квадрат зэрэгт дэвшүүлэх \(x^2\)
0.5 Квадрат язгуур авах \(\sqrt{x}\)
0 Логарифм хувиргалт \(\ln x\)
\(-1\) Урвуу хувиргалт \(1/x\)

Одоо хувиргалтын \(\lambda\) параметрийн утгыг хэрхэн олох вэ гэсэн ганц л асуудал тулгарч байна. Бид дээр регрессийн шугаман загварын үлдэгдлийг хэвийн тархалттай гэж шаардсан. Тийнхүү тархалтын хэлбэр мэдэгдэх болсон. Нөгөө талаас, \(U=Y-(\beta_0+\beta X)\) үлдэгдлийг тодорхойлох \(Y\) хувьсагчийг Бокс-Коксын хувиргалтаар хувиргана. Тэгэхээр тус тархалт уг хувиргалтын \(\lambda\) параметрээс хамаарна. Иймд бид тус тархалтын үл мэдэгдэх параметрийг үнэлэх ажилтай боллоо.

Тархалтын параметрийн хамгийн их үнэний ортой үнэлэлт

Тархалтын үл мэдэгдэх параметрийг үнэлэх хамгийн их үнэний орын арга буюу Maximum Likelihood Estimation (MLE) [1] гэж байдаг. Тус арга нь \(X\) санамсаргүй хувьсагчийн \(f_X(x,\theta)\) нягтын функц дэх \(\theta\) гэсэн үл мэдэгдэх параметрийг үнэлэхдээ \(X\) хувьсагчийн эх олонлогоос авсан \(X_1,\ldots,X_n\) түүвэр дэх \(\theta\) параметрийн үнэний ор дээр суурилдаг. \(X_1,\ldots,X_n\) түүврийг хэрэгжүүлж туршилт явуулан өгөгдөл гаргаж авах үед байсан \(\theta\) параметрийн жинхэнэ утгын ор мөр тус өгөгдөл дээр буусан байна. Ийнхүү \(X_1,\ldots,X_n\) түүврийн ажиглагдах боломж буюу нягт нь \(\theta\) параметрийн жинхэнэ утга дээр л хамгийн их байдаг ба үүнийг онолын хувьд баталсан байдаг. Тэгэхээр \(\theta\) параметрийн үнэн бодит утгыг олохын тулд \(X_1,\ldots,X_n\) түүвэртэй харгалзах \(\theta\) параметрийн үнэний орыг тус параметрээр максимумчилна.

\(X_1,\ldots,X_n\) түүврийн нягт дараах хэлбэртэй байна. Энд түүврийн элементүүдийг хамааралгүй гэж тооцно. Мөн түүврийг \(X\) хувьсагчийн эх олонлогоос авсан буюу түүврийн элементүүд \(X\) хувьсагч шиг \(f_X(x,\theta)\) нягттай гэдгийг анхаарна. Ийнхүү түүврийн нягтын функц дараах хэлбэртэй болно.

\[L(X_1,\ldots,X_n,\theta)=f_{X}(X_1,\theta)\cdot\ldots\cdot f_{X}(X_n,\theta)\]

Одоо тус нягтыг хамгийн их утгатай байлгах \(\theta\) аргументын утгыг олно. Өөрөөр хэлбэл
\[\mathop{\vcenter{\operatorname{argmax}}}\limits_{\theta} L(X_1,\ldots,X_n,\theta)\]
оптимизацын бодлого бодно. Энэ бодлогыг бодохын тулд үржвэрийн уламжлал авах нь төвөгтэй тул монотон чанартай логарифм функцээр хувиргасан \(\ln L\) хэмжигдэхүүнийг авч үздэг. Үүнийг логарифм үнэний орын функц гэдэг. Ийнхүү
\[\mathop{\vcenter{\operatorname{argmax}}}\limits_{\theta} \ln L(X_1,\ldots,X_n,\theta)\]
буюу
\[\mathop{\vcenter{\operatorname{argmax}}}\limits_{\theta} \sum_{i=1}^{n} \ln f_X(X_i,\theta)\]
бодлого бодож параметрийн үнэлэлтийг олно.

Бокс-Коксын хувиргалтын параметрийн үнэлэлт

\(Y\) хувьсагчийг Бокс-Коксын хувиргалтаар хувиргах болсон гэе. Тэгвэл хувиргалтын \(\lambda\) параметрийн утгыг олох хэрэгтэй болно. Тус параметрийн утгыг сая авч үзсэн хамгийн их үнэний орын аргаар олно. Хувиргалтаар гарах хувьсагчийг \(Y^{(\lambda)}\) гэж тэмдэглэе.

Хувиргалтыг хэрэгжүүлэхийн тулд эхлээд хувиргалтын параметрийн утгыг олох хэрэгтэй. Статистикийн аргаар параметр үнэлж олохын тулд өгөгдөл хэрэгтэй. Иймд \(Y\) хувьсагчийн эх олонлогоос \(Y_1,\ldots,Y_n\) түүвэр авсан гэнэ.

Нөгөө талаас \(Y^{(\lambda)}=\beta_0+\beta X\) шугаман загварын \(U=Y^{(\lambda)}-(\beta_0+\beta X)\) үлдэгдэл \(N(0,\sigma^2)\) хэвийн тархалттай гэсэн шаардлагын дагуу дээрх түүврийн \(Y_i^{(\lambda)}\) элемент \(\mu_i=\beta_0+\beta X_i\) дундажтай, \(\sigma^2\) дисперстэй хэвийн тархалттай байх болно. Өөрөөр хэлбэл \(Y_i^{(\lambda)}\sim N(\beta_0+\beta X_i,\sigma^2)\) гэсэн үг юм. Гэхдээ бидэнд зөвхөн \(Y\) хувьсагчийн эх олонлогоос авсан \(Y_1,\ldots,Y_n\) түүвэр л бий бөгөөд түүврийн элемент тус бүрийг \(Y_i^{(\lambda)}\) гэж хувиргаад ашиглаж байна.

Дээрхийг харвал, бид хувиргалтаар гарган авсан \(Y^{(\lambda)}\) хувьсагчийн тархалтын хэлбэрийг "мэдэх" бөгөөд нэгэнт өгөгдсөн \(Y_1,\ldots,Y_n\) түүврийн зүгээс авч үзвэл анхны \(Y\) хувьсагчийн тархалтыг тодорхойлох хэрэгтэй. Ингээд дээр үзсэн томъёог одоогийн тохиолдолд бичвэл
\[f_Y(y)=f_{Y^{(\lambda)}}(g(y))\left|\frac{d}{dy}g(y)\right|\]
улмаар Бокс-Коксын хувиргалтын \(g(y)=y^{(\lambda)}=\frac{y^\lambda-1}{\lambda}\) томъёог орлуулбал
\[f_Y(y)=f_{Y^{(\lambda)}}(y^{(\lambda)})y^{\lambda-1}\]
хэлбэртэй болно.

Параметрийг хамгийн их үнэний орын аргаар үнэлэхийн тулд үнэний орын функцийг бичих хэрэгтэй. Үүний илэрхийлэлд санамсаргүй хувьсагчийн эх олонлогийн тархалтын нягтын функц оролцдог. Манай тохиолдолд тархалтыг хэвийн гэж шаардсан тул хэвийн тархалтын нягтын функцийн хэлбэрийг санах хэрэгтэй. \(N(\mu,\sigma^2)\) хэвийн тархалтын нягтын функцийн илэрхийлэл
\[f(x)=\frac{1}{\sqrt{2\pi\sigma^2}}e^{-\frac{(x-\mu)^2}{2\sigma^2}}\]
хэлбэртэй байдаг.

Ингээд \(Y_1,\ldots,Y_n\) түүврийн зүгээс \(\lambda\), \(\mu_i\) (угтаа \(\beta\)), \(\sigma^2\) параметрүүдийн үнэний орын функцийг бичье.
\[L(\lambda,\beta,\sigma^2)=\prod_{i=1}^{n}\left[\underbrace{\frac{1}{\sqrt{2\pi\sigma^2}} \exp\left( -\frac{(Y_i^{(\lambda)} - (\beta_0+\beta X_i))^2}{2\sigma^2} \right)}_{\text{хэвийн тархалтын магадлалын нягт}} \cdot \underbrace{Y_i^{\lambda-1}}_{\text{хувиргалтын Якобиан}}\right]\]
Энд \(Y\) "хуучин" хувьсагчийн магадлалын нягтыг хувиргалт ба \(Y^{(\lambda)}\) "шинэ" хувьсагчийн магадлалын нягт бас хувиргалтын Якобианы тусламжтай илэрхийлсэн. Улмаар логарифм-үнэний орын функц нь
\[\ln L(\lambda,\beta,\sigma^2) = -\frac{n}{2}\ln(2\pi) - n\ln\sigma - \frac{1}{2\sigma^2}\sum_{i=1}^n\left[Y_i^{(\lambda)}-(\beta_0+\beta X_i)\right]^2 + (\lambda-1)\sum_{i=1}^n\ln Y_i\]
хэлбэртэй болно.

Одоо дээрх логарифм-үнэний орын функцийг \(\lambda\), \(\beta\), \(\sigma^2\) аргументуудаар максимумчлан эдгээр параметрүүдийн хамгийн их үнэний ортой үнэлэлтийг олно. \(\lambda\) өгөгдсөн үед \(\hat{\beta}\) үнэлэлтийг хамгийн бага квадратын аргаар олох ба дисперсийн үнэлэлт
\[\hat{\sigma}^2 = \frac{1}{n} \sum_{i=1}^n \left( Y_i^{(\lambda)} - \hat{Y}_i^{(\lambda)} \right)^2\]
гэж олддог. Энд буй \(\hat{Y}_i^{(\lambda)}\) нь регрессийн шугаман загварын тусламжтай үнэлсэн \(Y_i^{(\lambda)}\) утгын үнэлэлт юм. \(\hat{\sigma}^2\) үнэлэлтийн томъёо дахь нийлбэр бол регрессийн шугаман загварын үлдэгдлийн квадратуудын нийлбэр буюу Residual Sum of Squares (RSS) юм. Эцэст нь дээрх үнэлэлтийг үндсэн логарифм-үнэний орын функцийн томъёонд орлуулаад хялбарчилбал, тус функц зөвхөн \(\lambda\) параметрээс хамаарсан дараах хэлбэртэй болно.
\[\ln L(\lambda) = -\frac{n}{2} \ln(\hat{\sigma}^2(\lambda)) + (\lambda - 1) \sum_{i=1}^n \ln Y_i + \text{тогтмол}\]
Үүнийг профил логарифм-үнэний ор гэдэг. Үүнийг харвал эхний хэсэг \(-\frac{n}{2} \ln \hat{\sigma}^2\) нь алдааг багасгахыг эрмэлзэх бол хоёр дахь хэсэг \((\lambda - 1) \sum \ln Y_i\) нь Якобиан буюу өгөгдлийн масштабыг тэнцвэржүүлэх үүрэгтэй байна.
\(\ln L(\lambda)\) функц нь ерөнхийдөө хотгор тул үүний максимум утгыг аналитик аргаар буюу уламжлал аваад тэгтэй тэнцүүлсэн тэгшитгэл бодож олоход хэцүү. Иймээс \(\mathop{\vcenter{\operatorname{argmax}}}\limits_{\lambda}\ln L(\lambda)\) оптимизацын бодлогыг тоон аргаар боддог. Практикт үүнийг дараах алгоритмаар хэрэгжүүлдэг.

  1. Интервал тогтоох: \(\lambda\) параметрийн боломжит утгуудын мужийг (ихэвчлэн \(-2\)-оос \(2\)-ын хооронд) тогтооно.
  2. Тооцоолох: Уг муж дотор \(\lambda\) параметрийн утгыг бага багаар өөрчлөн \(\ln L(\lambda)\) бүрийг тооцоолно.
  3. Максимумын цэгийг олох: Функцийн утга хамгийн өндөр байгаа \(\lambda\) аргументын утгыг "хамгийн оновчтой утга" буюу \(\hat{\lambda}\) гэж сонгоно.

Ийнхүү Бокс-Коксын хувиргалтын параметрийн хамгийн их үнэний ортой үнэлэлтийг олох ажлыг R програм дээр дараах байдлаар гүйцэтгэнэ [3].

bc <- MASS::boxcox(y ~ 1, lambda = seq(-2, 2, 0.1))
hat_lambda <- bc$x[which.max(bc$y)]
cat("Lambda параметрийн хамгийн их үнэний ортой үнэлэлт:", hat_lambda)

Энд y нь өгөгдөл агуулж буй вектор юм.

Дээрх код дотор шугаман загварын томъёоллыг y ~ 1 гэж бичсэн нь \(Y\) хувьсагчийн дунджийг тогтмол гэж үзэж буй явдал юм. Харин регрессийн шинжилгээ хийж байгаа үед буюу \(Y\) хувьсагчийн дундаж нь \(X\) хувьсагчаас \(E[Y]=\beta_0+\beta X\) гэж шугаманаар хамаардаг гэж үзэж буй бол тус томъёоллыг y ~ x хэлбэрээр бичнэ.

Бас \(\hat\lambda\) үнэлэлтийг forecast багцын BoxCox.lambda() функцээр шууд олж болдог.

hat_lambda <- forecast::BoxCox.lambda(datasets::rivers)
cat("Lambda параметрийн хамгийн их үнэний ортой үнэлэлт:", hat_lambda)

Энд R програмын datasets багц дахь rivers вектор дахь бэлэн өгөгдлийг ашиглав.

Бокс-Коксын хувиргалт ашиглан ажиллах дараалал

  1. Шинжилгээ: Өгөгдлийн тархалтыг шалгана. Гистограмм эсвэл Q-Q диаграмм бас Шапиро-Уилкийн шинжүүр зэргийг ашиглана.
  2. Оновчлол: Өгөгдөлд тохирох хамгийн сайн \(\lambda\) параметрийг олно.
  3. Хувиргалт: Дээр үзсэн томъёоны сая олсон параметртэй харгалзах хувилбарыг ашиглаж өгөгдлийг хувиргана.
  4. Шалгалт: Хувиргасан өгөгдөл хэвийн тархалттай болсон эсэхийг шалгана.
y <- datasets::rivers

# 1
qqnorm(y)
qqline(y)

shapiro.test(y)

# 2
hat_lambda <- forecast::BoxCox.lambda(y)

# 3
y_lambda <- forecast::BoxCox(y, hat_lambda)

# 4.
shapiro.test(y_lambda)

Лавлах материал

  1. D. P. Bertsekas and J. N. Tsitsiklis, Introduction to probability, 1st ed. Athena Scientific, 2002. Available: https://ocw.mit.edu/courses/6-041-probabilistic-systems-analysis-and-applied-probability-fall-2010/
  2. D. Diez, M. Cetinkaya-Rundel, and C. Barr, OpenIntro statistics, 4th ed. 2019. Available: https://www.openintro.org/book/os/
  3. D. G. Rossiter, Technical note: transformations. Section of Soil; Crop Sciences, School of Integrative Plant Science, Cornell University, 2018. Available: https://www.css.cornell.edu/faculty/dgr2/_static/files/R_html/Transformations.html