यहां चर्चा की गई Yeo-Johnson पावर ट्रांसफॉर्मेशन की में बॉक्स कॉक्स पावर ट्रांसफॉर्मेशन की खूबियों पर निर्माण करते हुए शून्य और निगेटिव को संभालने के लिए डिज़ाइन किए गए उत्कृष्ट गुण हैं। यह वही है जो मैं आमतौर पर जाता हूं जब मैं शून्य या नकारात्मक डेटा के साथ काम कर रहा हूं।
यहां येओ-जॉनसन बेहतर क्यों है, यह स्पष्ट करने के लिए पेशेवरों / विपक्ष के साथ परिवर्तनों का एक सारांश है।
लॉग
पेशेवरों: सकारात्मक डेटा के साथ अच्छा करता है।
विपक्ष: शून्य को नहीं संभालता है।
> log(0)
[1] -Inf
लॉग प्लस 1
पेशेवरों: प्लस 1 ऑफसेट सकारात्मक डेटा के अलावा शून्य को संभालने की क्षमता जोड़ता है।
विपक्ष: नकारात्मक डेटा के साथ विफल
> log1p(-1)
[1] -Inf
> log1p(-2)
[1] NaN
Warning message:
In log1p(-2) : NaNs produced
वर्गमूल
पेशेवरों: एक बिजली परिवर्तन का उपयोग करता है जो शून्य और सकारात्मक डेटा को संभाल सकता है।
विपक्ष: नकारात्मक डेटा के साथ विफल
> sqrt(-1)
[1] NaN
Warning message:
In sqrt(-1) : NaNs produced
बॉक्स कॉक्स
आर कोड:
box_cox <- function(x, lambda) {
eps <- 0.00001
if (abs(lambda) < eps)
log(x)
else
(x ^ lambda - 1) / lambda
}
पेशेवरों: बड़े पैमाने पर बिजली परिवर्तनों को सक्षम करता है
विपक्ष: शून्य और नकारात्मक के साथ मुद्दों से पीड़ित (यानी केवल सकारात्मक डेटा को संभाल सकता है।
> box_cox(0, lambda = 0)
[1] -Inf
> box_cox(0, lambda = -0.5)
[1] -Inf
> box_cox(-1, lambda = 0.5)
[1] NaN
येओ जॉनसन
आर कोड:
yeo_johnson <- function(x, lambda) {
eps <- .000001
not_neg <- which(x >= 0)
is_neg <- which(x < 0)
not_neg_trans <- function(x, lambda) {
if (abs(lambda) < eps) log(x + 1)
else ((x + 1) ^ lambda - 1) / lambda
}
neg_trans <- function(x, lambda) {
if (abs(lambda - 2) < eps) - log(-x + 1)
else - ((-x + 1) ^ (2 - lambda) - 1) / (2 - lambda)
}
x[not_neg] <- not_neg_trans(x[not_neg], lambda)
x[is_neg] <- neg_trans(x[is_neg], lambda)
return(x)
}
पेशेवरों: सकारात्मक, शून्य और नकारात्मक डेटा को संभाल सकते हैं।
विपक्ष: कोई भी नहीं जो मैं सोच सकता हूं। गुण बॉक्स-कॉक्स के समान हैं लेकिन शून्य और नकारात्मक डेटा को संभाल सकते हैं।
> yeo_johnson(0, lambda = 0)
[1] 0
> yeo_johnson(0, lambda = -0.5)
[1] 0
> yeo_johnson(-1, lambda = 0.5)
[1] -1.218951