सामान्य आरवी के कर्टोसिस और तिरछापन को बढ़ाने के लिए परिवर्तन


20

मैं एक एल्गोरिथ्म है कि तथ्य यह है कि टिप्पणियों पर निर्भर करता है पर काम कर रहा हूँ एस सामान्य रूप से वितरित कर रहे हैं, और मैं अनुभव इस धारणा को एल्गोरिथ्म की मजबूती का परीक्षण करना चाहते हैं।Y

ऐसा करने के लिए, मैं परिवर्तनों का एक क्रम लिए देख रहा था जो उत्तरोत्तर की सामान्यता को बाधित करेगा । उदाहरण के लिए यदि सामान्य हैं, तो उनके पास तिरछा और कर्टोसिस , और परिवर्तन का एक क्रम ढूंढना अच्छा होगा जो उत्तरोत्तर दोनों को बढ़ाता है।वाई वाई = 0 = 3T1(),,Tn()YY=0=3

मेरा विचार कुछ सामान्य रूप से वितरित डेटा का अनुकरण करना और उस पर एल्गोरिदम का परीक्षण करना था। प्रत्येक रूपांतरित डेटासेट पर थान एल्गोरिथम , यह देखने के लिए कि आउटपुट कितना बदल रहा है।T 1 ( Y ) , , T n ( y )Yटी1(Y),...,टीn(y)

ध्यान दें कि मैं सिम्युलेटेड s के वितरण को नियंत्रित नहीं करता हूं , इसलिए मैं सामान्य (जैसे तिरछे सामान्यीकृत त्रुटि वितरण) को सामान्य करने वाले वितरण का उपयोग करके उनका अनुकरण नहीं कर सकता।Y


2
एक परिवर्तन के अनुक्रम के साथ समस्या यह है कि आपका निष्कर्ष उस विशेष अनुक्रम के प्रभावों तक सीमित है। आपका अनुक्रम प्रभावी रूप से अंतरिक्ष में एक पथ को वितरित करेगा, जो कि वितरण के एकल परिवार के लिए एक समान है (संभवतः एक-पैरामीटर, क्योंकि आप 'अनुक्रम' कहते हैं) सामान्य परिवर्तन। दे दें कि व्यवहार्य क्षेत्र 2 डी है और इसके भीतर दिए गए किसी भी बिंदु के लिए विभिन्न वितरणों की एक अनंत संख्या है, एक एकल वक्र का पता लगाने वाले एकल परिवार को देखकर कुछ हद तक सीमित होगा ... (ctd) )( γ 1 , γ 2 )(γ1,γ2)(γ1,γ2)
Glen_b -Reinstate मोनिका

1
(ctd) ... विशेषकर यदि आपके द्वारा बनाया गया विशेष परिवार उन मुद्दों को प्रकट नहीं करता है जो अन्यथा काफी सामान्य हो सकते हैं।
Glen_b -Reinstate मोनिका

जवाबों:


22

यह sinh-arcsinh परिवर्तन का उपयोग करके किया जा सकता है

जोन्स, एमसी और प्यासी ए (2009)। सिंह-अर्कसिंह वितरणबायोमेट्रिक 96: 761–780।

परिवर्तन के रूप में परिभाषित किया गया है

()एच(एक्स;ε,δ)=सिंह[δसिंह-1(एक्स)-ε],

जहां और । जब यह परिवर्तन सामान्य CDF , तो यह एक असमान वितरण उत्पन्न करता है जिसके पैरामीटर नियंत्रण वैन ज़्वेट (1969) के अर्थ में क्रमशः तिरछापन और कुर्तोसिस, (जोन्स एंड प्यूसी, 2009 ) । इसके अलावा, अगर और , हम मूल सामान्य वितरण प्राप्त करते हैं। निम्नलिखित आर कोड देखें। δ आर + एस ( एक्स , ε , δ ) = Φ [ एच ( एक्स , ε , δ ) ] (εआरδआर+एस(एक्स;ε,δ)=Φ[एच(एक्स;ε,δ)]ε = 0 δ = 1(ε,δ)ε=0δ=1

fs = function(x,epsilon,delta) dnorm(sinh(delta*asinh(x)-epsilon))*delta*cosh(delta*asinh(x)-epsilon)/sqrt(1+x^2)

vec = seq(-15,15,0.001)

plot(vec,fs(vec,0,1),type="l")
points(vec,fs(vec,1,1),type="l",col="red")
points(vec,fs(vec,2,1),type="l",col="blue")
points(vec,fs(vec,-1,1),type="l",col="red")
points(vec,fs(vec,-2,1),type="l",col="blue")

vec = seq(-5,5,0.001)

plot(vec,fs(vec,0,0.5),type="l",ylim=c(0,1))
points(vec,fs(vec,0,0.75),type="l",col="red")
points(vec,fs(vec,0,1),type="l",col="blue")
points(vec,fs(vec,0,1.25),type="l",col="red")
points(vec,fs(vec,0,1.5),type="l",col="blue")

इसलिए, मापदंडों एक उपयुक्त अनुक्रम , आप विभिन्न स्तरों के तिरछेपन और साथ वितरण / परिवर्तन का एक क्रम उत्पन्न कर सकते हैं और उन्हें सामान्य वितरण के समान या अलग दिख सकते हैं।(εn,δn)

निम्नलिखित कथानक R कोड द्वारा निर्मित परिणाम दिखाता है। के लिए (i) और , और (ii) और ।δ = 1 ε = 0ε=(-2,-1,0,1,2)δ=1 ε=0δ=(0.5,0.75,1,1.25,1.5)

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें

इस वितरण का अनुकरण सीधा दिया गया है कि आपको सिर्फ के व्युत्क्रम का उपयोग करके एक सामान्य नमूने को बदलना है ।()

एच-1(एक्स;ε,δ)=सिंह[δ-1(सिंह-1(एक्स)+ε)]

2
बहुत बहुत धन्यवाद Procrastinator! यही वह है जिसकी तलाश में मैं हूं।
मट्टियो फासीओलो

2
लगता gamlss.dist::rSHASHoहै यह वितरण उत्पन्न कर सकता है।
आर्टेम क्लेवत्सोव

7

यह लैम्बर्ट डब्ल्यू एक्स एफ यादृच्छिक चर / वितरण का उपयोग करके किया जा सकता है। एक लैम्बर्ट डब्ल्यू एक्स एफ यादृच्छिक चर (आरवी) वितरण एफ के साथ एक गैर-रैखिक रूप से परिवर्तित (आरवी) एक्स है।

F का सामान्य वितरण और , वे Tukey के वितरण को कम करते हैं। लैम्बर्ट डब्ल्यू एक्स एफ वितरण की अच्छी संपत्ति यह है कि आप गैर-सामान्य से सामान्य से फिर से वापस जा सकते हैं; यानी, आप मापदंडों और अपने डेटा का अनुमान लगा सकते हैं ।α=1Gaussianize()

वे में कार्यान्वित कर रहे हैं

लैम्बर्ट डब्ल्यू एक्स एफ परिवर्तन 3 स्वादों में आते हैं:

  • type = 's' तिरछा पैरामीटर ( ) के साथ तिरछा ( )γआर
  • type = 'h'टेल-पैरामीटर (और वैकल्पिक ) के साथ भारी-पूंछ ( )αδ0α
  • तिरछा और भारी पूंछ ( type = 'hh') बाएँ / दाएँ पूंछ पैरामीटर δएल,δआर0

तिरछे और भारी पूंछ (ओं) पर संदर्भ देखें (अस्वीकरण: मैं लेखक हूं।)

R में आप LambertW पैकेज के साथ कई Lambert W x F वितरण का अनुकरण, अनुमान, प्लॉट आदि कर सकते हैं ।

library(LambertW)
library(RColorBrewer)
# several heavy-tail parameters
delta.v <- seq(0, 2, length = 11)
x.grid <- seq(-5, 5, length = 100)
col.v <- colorRampPalette(c("black", "orange"))(length(delta.v))

plot(x.grid, dnorm(x.grid), lwd = 2, type = "l", col = col.v[1],
     ylab = "")
for (ii in seq_along(delta.v)) {
  lines(x.grid, dLambertW(x.grid, "normal", 
                          theta = list(delta = delta.v[ii], beta = c(0, 1))),
        col = col.v[ii])
}
legend("topleft", paste(delta.v), col = col.v, lty = 1,
       title = "delta = ")

यहां छवि विवरण दर्ज करें

यह तिरछा जोड़ने के लिए Gamma के अनुक्रम के लिए समान रूप से काम करता है । और यदि आप तिरछा और भारी पूंछ जोड़ना चाहते हैं, तो और का एक क्रम उत्पन्न करें ।δ एल δ आरγδएलδआर


5

ऐसा एक क्रम विभिन्न डिग्री के लिए घातांक है। उदाहरण के लिए

library(moments)
x <- rnorm(1000) #Normal data
x2 <- 2^x #One transformation
x3 <- 2^{x^2} #A stronger transformation
test <- cbind(x, x2, x3) 
apply(test, 2, skewness) #Skewness for the three distributions
apply(test, 2, kurtosis) #Kurtosis for the three distributions

आप परिवर्तन की मध्यवर्ती डिग्री प्राप्त करने के लिए कर सकते हैं।एक्स1.1,एक्स1.2...एक्स2


0

@ User10525 के रूप में एक ही जवाब लेकिन अजगर में

import numpy as np
from scipy.stats import norm
def sinh_archsinh_transformation(x,epsilon,delta):
    return norm.pdf(np.sinh(delta*np.arcsinh(x)-epsilon))*delta*np.cosh(delta*np.arcsinh(x)-epsilon)/np.sqrt(1+np.power(x,2))


vec = np.arange(start=-15,stop=15+0.001,step=0.001)

import matplotlib.pyplot as plt
plt.plot(vec,sinh_archsinh_transformation(vec,0,1))
plt.plot(vec,sinh_archsinh_transformation(vec,1,1),color='red')
plt.plot(vec,sinh_archsinh_transformation(vec,2,1),color='blue')
plt.plot(vec,sinh_archsinh_transformation(vec,-1,1),color='red')
plt.plot(vec,sinh_archsinh_transformation(vec,-2,1),color='blue')

[1]

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.