डेटा को r (लॉग, स्क्वायर रूट, क्यूब रूट) में कैसे बदलें


कई सांख्यिकीय परीक्षण मानते हैं कि प्रतिक्रिया चर के अवशेष सामान्य रूप से वितरित होते हैं।

हालाँकि, अवशेष अक्सर सामान्य रूप से वितरित नहीं होते हैं। इस समस्या को हल करने का एक तरीका तीन परिवर्तनों में से एक का उपयोग करके प्रतिक्रिया चर को बदलना है:

1. लॉग परिवर्तन: प्रतिक्रिया चर को y से log(y) में बदलें।

2. वर्गमूल परिवर्तन: प्रतिक्रिया चर को y से √y में बदलें।

3. घनमूल परिवर्तन: प्रतिक्रिया चर को y से y 1/3 में बदलें।

इन परिवर्तनों को निष्पादित करके, प्रतिक्रिया चर आम तौर पर सामान्य वितरण का अनुमान लगाता है। निम्नलिखित उदाहरण दिखाते हैं कि आर में इन परिवर्तनों को कैसे निष्पादित किया जाए।

आर में लॉग परिवर्तन

निम्नलिखित कोड दिखाता है कि प्रतिक्रिया चर पर लॉग परिवर्तन कैसे करें:

 #create data frame
df <- data.frame(y=c(1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 6, 7, 8),
                 x1=c(7, 7, 8, 3, 2, 4, 4, 6, 6, 7, 5, 3, 3, 5, 8),
                 x2=c(3, 3, 6, 6, 8, 9, 9, 8, 8, 7, 4, 3, 3, 2, 7))

#perform log transformation
log_y <- log10(df$y)

निम्नलिखित कोड दिखाता है कि लॉग परिवर्तन करने से पहले और बाद में y के वितरण को प्रदर्शित करने के लिए हिस्टोग्राम कैसे बनाया जाए:

 #create histogram for original distribution
hist(df$y, col='steelblue', main='Original')

#create histogram for log-transformed distribution 
hist(log_y, col='coral2', main='Log Transformed')

आर में लॉग डेटा परिवर्तन

ध्यान दें कि कैसे लॉग-रूपांतरित वितरण मूल वितरण की तुलना में कहीं अधिक सामान्य है। यह अभी भी एक आदर्श “घंटी आकार” नहीं है, लेकिन यह मूल वितरण की तुलना में सामान्य वितरण के करीब है।

वास्तव में, यदि हम प्रत्येक वितरण पर शापिरो-विल्क परीक्षण करते हैं, तो हम पाएंगे कि मूल वितरण सामान्यता धारणा में विफल रहता है, जबकि लॉग-रूपांतरित वितरण (α = 0.05 पर) नहीं करता है:

 #perform Shapiro-Wilk Test on original data
shapiro.test(df$y)

	Shapiro-Wilk normality test

data: df$y
W = 0.77225, p-value = 0.001655

#perform Shapiro-Wilk Test on log-transformed data 
shapiro.test(log_y)

	Shapiro-Wilk normality test

data:log_y
W = 0.89089, p-value = 0.06917

आर में वर्गमूल परिवर्तन

निम्नलिखित कोड दिखाता है कि प्रतिक्रिया चर पर वर्गमूल परिवर्तन कैसे करें:

 #create data frame
df <- data.frame(y=c(1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 6, 7, 8),
                 x1=c(7, 7, 8, 3, 2, 4, 4, 6, 6, 7, 5, 3, 3, 5, 8),
                 x2=c(3, 3, 6, 6, 8, 9, 9, 8, 8, 7, 4, 3, 3, 2, 7))

#perform square root transformation
sqrt_y <- sqrt(df$y)

निम्नलिखित कोड दिखाता है कि वर्गमूल परिवर्तन करने से पहले और बाद में y के वितरण को प्रदर्शित करने के लिए हिस्टोग्राम कैसे बनाया जाए:

 #create histogram for original distribution
hist(df$y, col='steelblue', main='Original')

#create histogram for square root-transformed distribution 
hist(sqrt_y, col='coral2', main='Square Root Transformed') 

आर में वर्गमूल परिवर्तन

ध्यान दें कि कैसे वर्गमूल रूपांतरित वितरण मूल वितरण की तुलना में कहीं अधिक सामान्य रूप से वितरित होता है।

आर में घनमूल परिवर्तन

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

 #create data frame
df <- data.frame(y=c(1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 6, 7, 8),
                 x1=c(7, 7, 8, 3, 2, 4, 4, 6, 6, 7, 5, 3, 3, 5, 8),
                 x2=c(3, 3, 6, 6, 8, 9, 9, 8, 8, 7, 4, 3, 3, 2, 7))

#perform square root transformation
cube_y <- df$y^(1/3)

निम्नलिखित कोड दिखाता है कि वर्गमूल परिवर्तन करने से पहले और बाद में y के वितरण को प्रदर्शित करने के लिए हिस्टोग्राम कैसे बनाया जाए:

 #create histogram for original distribution
hist(df$y, col='steelblue', main='Original')

#create histogram for square root-transformed distribution 
hist(cube_y, col='coral2', main='Cube Root Transformed') 

आर में घनमूल परिवर्तन

आपके डेटासेट के आधार पर, इनमें से एक परिवर्तन एक नया डेटासेट उत्पन्न कर सकता है जो अन्य की तुलना में अधिक सामान्य रूप से वितरित होता है।

एक टिप्पणी जोड़ने

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *