मुख्य सामग्री पर जाएं

Q-Q प्लॉट: इसका अर्थ क्या है और इसे कैसे समझें

जानें कि Q-Q प्लॉट्स नॉर्मलिटी का आकलन करने का उपयोगी दृश्य तरीका कैसे हैं। नॉर्मल जैसे सैद्धांतिक वितरण के साथ अवलोकित डेटा की तुलना करके विचलनों को उजागर करें। मॉडल फिट का निदान करना सीखें।
अपडेट किया गया 25 सित॰ 2026  · 8 मि॰ पढ़ें

AI के साथ खोजें

ChatGPTClaudePerplexity

लिनीयर रिग्रेशन मॉडल्स का उपयोग सांख्यिकी और मशीन लर्निंग में इनपुट फीचर्स के आधार पर संख्यात्मक मानों की भविष्यवाणी करने और चर के बीच संबंध को समझने के लिए व्यापक रूप से किया जाता है। हालांकि, केवल इसलिए कि आप अपने डेटा के बीच एक रेखा फिट कर सकते हैं, इसका अर्थ यह नहीं है कि आपको करना ही चाहिए। हमें यह भी परखना होता है कि फिट की गुणवत्ता कैसी है, ताकि यह तय किया जा सके कि मॉडल डेटा के लिए उपयुक्त है या उसे परिष्कृत करने की आवश्यकता है।

मॉडल की जाँच के कई तरीके हैं, जिनमें ट्रेन/टेस्ट वर्कफ़्लो का उपयोग करके मॉडल का मूल्यांकन करना और एडजस्टेड R-स्क्वेर्ड जैसे मॉडल आँकड़ों को देखना शामिल है। इस लेख में, मैं एक विशिष्ट डायग्नॉस्टिक प्लॉट, जिसे Q-Q प्लॉट कहते हैं, को कैसे बनाते हैं और कैसे समझते हैं, उस पर ध्यान दूँगा, और R प्रोग्रामिंग भाषा में इसे बनाने के कुछ अलग तरीकों को दिखाऊँगा। रिग्रेशन तकनीकों में महारत जारी रखने के लिए, अपनी सुविधा के स्तर के अनुसार Introduction to Regression in R या Intermediate Regression in R लें, या Python के लिए Introduction to Regression in Python या Intermediate Regression in Python लें।

Q-Q प्लॉट क्या है?

Q-Q (Quantile-Quantile) प्लॉट का उपयोग यह देखने के लिए किया जाता है कि कोई डेटासेट किसी विशेष सैद्धांतिक वितरण का पालन करता है या नहीं। यह अवलोकित डेटा के क्वांटाइल्स की तुलना उस अन्य वितरण के क्वांटाइल्स से करके काम करता है। मैंने सटीकता से ‘सैद्धांतिक वितरण’ कहा, लेकिन अक्सर जब हम Q-Q प्लॉट बनाते हैं, तो हम विशेष रूप से नॉर्मल या गॉसियन वितरण के बारे में सोचते हैं, और इसे नॉर्मल Q-Q प्लॉट कहते हैं। हालांकि, Q-Q प्लॉट का उपयोग डेटा की तुलना अन्य वितरणों से करने के लिए भी किया जा सकता है, जैसे एक्सपोनेंशियल, यूनिफॉर्म, काई-स्क्वेर्ड, t-वितरण, पॉइसन वितरण, या अन्य, संदर्भ के आधार पर।

उदाहरण से समझना उपयोगी रहता है। यहाँ, मैंने 10 संख्याएँ बनाई हैं। नॉर्मल Q-Q प्लॉट बनाने के लिए, मैं पहले संख्याओं को क्रम में रखता हूँ। फिर, मैं इस समीकरण से प्रायिकता की गणना करता हूँ: q = (i– 0.5)/n। इसके बाद, मैं स्टैन्डर्ड नॉर्मल वितरण के प्रतिशत-बिंदु फ़ंक्शन (PPF) (qnorm() फ़ंक्शन) का उपयोग करके उस रैंक के लिए सम्बंधित मान निकाल सकता हूँ। (आप शायद समष्टि वितरण फ़ंक्शन (CDF) से अधिक परिचित होंगे, जो हमें किसी मान x तक की प्रायिकता बताता है। PPF इसका उलटा जैसा होता है: यह दी गई प्रायिकता के लिए x-मूल्य देता है।)

अंत में, ग्राफ बनाने के लिए, हम अपने अवलोकित मानों के क्वांटाइल्स को सैद्धांतिक क्वांटाइल्स के विरुद्ध प्लॉट करते हैं (इसीलिए Q-Q प्लॉट में दो Q होते हैं)। रेखा का निर्माण अवलोकित और सैद्धांतिक दोनों वितरणों के प्रथम और तृतीय क्वार्टाइल्स का उपयोग करके ढाल और इंटरसेप्ट की गणना करके किया जाता है।

library(dplyr)
library(ggplot2)

# Create a data frame
data <- data.frame(
  numbers = c(
    -2.28261064680868, -0.91977039576432, -2.08595211862542,
    1.29734993896137, -0.200143957176023, -0.693254525721567,
    -3.90536265272207, 4.16373814964331, 2.3499592867344,
    0.299856042823977
  )
)

# Prepare Q-Q plot data
qq_data <- data %>%
  arrange(numbers) %>%  # Step 1: Arrange the numbers in ascending order
  mutate(
    rank = seq(1, n()), # Step 2: Rank each number from 1 to n
    prob = (rank - 0.5) / n(), # Step 3: Calculate empirical cumulative probability
    theoretical_quantile = qnorm(prob) # Step 4: Calculate theoretical quantiles
  )

# Calculate slope and intercept for the Q-Q line
q1_obs <- quantile(qq_data$numbers, probs = 0.25)
q3_obs <- quantile(qq_data$numbers, probs = 0.75)
q1_theo <- qnorm(0.25)
q3_theo <- qnorm(0.75)
slope <- (q3_obs - q1_obs) / (q3_theo - q1_theo)
intercept <- q1_obs - slope * q1_theo

# Create the Q-Q plot
(qq_plot <- ggplot(data = qq_data, aes(x = theoretical_quantile, y = numbers)) +
  geom_point(fill = '#01ef63', color = '#203147', shape = 21, size = 2) +  # Points with a border
  labs(title = "Q-Q Plot") +
  geom_abline(slope = slope, intercept = intercept, color = '#203147', linetype = "dashed"))
संख्याएँ रैंक प्रायिकता (prob) सैद्धांतिक क्वांटाइल (qnorm(प्रायिकता))
-3.905363 1 0.05 -1.644854
-2.282611 2 0.15 -1.036433
-2.085952 3 0.25 -0.674490
-0.919770 4 0.35 -0.385321
-0.693255 5 0.45 -0.125661
-0.200144 6 0.55 0.125661
0.299856 7 0.65 0.385321
1.297350 8 0.75 0.674490
2.349959 9 0.85 1.036433
4.163738 10 0.95 1.644854

दर्शनीय Q-Q प्लॉट। चित्र: लेखक द्वारा

Q-Q प्लॉट का उपयोग क्यों करें?

Q-Q प्लॉट वितरण-संबंधी मान्यताओं की जाँच करने का एक अच्छा दृश्य तरीका है। यह जाँचने के अन्य तरीके भी हैं कि डेटा नॉर्मल वितरण का पालन करता है या नहीं, जैसे शापिरो-विल्क परीक्षण, लेकिन मेरी राय में, Q-Q प्लॉट जितना दृश्य और कहानी को इतना स्पष्ट बनाने वाला कोई और तरीका नहीं है।

किसी चीज़ का वितरण जानना कई तरीकों से महत्वपूर्ण है। एक तो यह कि हमें केंद्र और फैलाव के सर्वोत्तम माप जानने होंगे। साथ ही, जब हम लिनीयर रिग्रेशन बनाते हैं, तो हम विशेष रूप से यह जानना चाहते हैं कि हमारा आश्रित चर नॉर्मल वितरण का अनुसरण करता है या नहीं, और हम यह भी देखना चाहते हैं कि हमारे मॉडल से निकलने वाले अवशेष (residuals) नॉर्मल रूप से वितरित हैं या नहीं, ताकि हमारे आकलनों पर भरोसा बेहतर हो। तो मूल रूप से, मुझे लगता है कि Q-Q प्लॉट दो सामान्य कारणों से उपयोगी हैं: हमारे डेटा की नमूना वितरणों से तुलना करना और नॉर्मलिटी की जाँच करना।

R में Q-Q प्लॉट कैसे बनाएँ

अब देखते हैं कि R में Q-Q प्लॉट कैसे बनाया जाए। इस खंड में, मैं तीन अलग-अलग तरीकों से गुजरूँगा: बेस R, car पैकेज, और tidyverse तरीके। आप देखेंगे कि मुझे tidyverse तरीके अधिक पसंद हैं क्योंकि वे आपको ग्राफ को बेहतर दिखाने के लिए अधिक लचीलापन देते हैं और अन्य पैकेजों के साथ अधिक विस्तारशीलता रखते हैं।

प्रत्येक तरीके के लिए, मैं एक साधारण लिनीयर रिग्रेशन के अवशेषों पर Q-Q प्लॉट बनाऊँगा, जो Q-Q प्लॉट का सबसे सामान्य—यदि सबसे अधिक सामान्य नहीं—उपयोग है। हालाँकि, आप लिनीयर रिग्रेशन बनाने से पहले ही चर के वितरण की जाँच के लिए Q-Q प्लॉट बना सकते हैं। आपको केवल एक चर का वितरण और तुलना के लिए एक सैद्धांतिक वितरण चाहिए।

यदि आप साथ चलना चाहते हैं, तो आप वह Kaggle डेटासेट डाउनलोड कर सकते हैं जिसका मैं उपयोग कर रहा हूँ: Car Prices Jordan 2023।

बेस R में Q-Q प्लॉट बनाना

पहले बेस R में Q-Q प्लॉट बनाते हैं, यानी हम कोई अतिरिक्त पैकेज इंस्टॉल नहीं करेंगे बल्कि केवल बिल्ट-इन फ़ंक्शंस का उपयोग करेंगे। 

# Importing data (in this example, saved on the desktop)
car_prices_jordan <- read.csv('~/Desktop/car_prices_jordan.csv')

# Create a linear model
car_linear_model <- lm(Price ~ sqrt(Price), data = filtered_car_prices)

# Extract the residuals
residuals <- resid(car_linear_model)

# Q-Q plot of residuals
qqnorm(residuals, main = "Q-Q Plot of Residuals from Linear Regression")
qqline(residuals, col = "red")

example Q-Q plot using base Rबेस R में बनाया गया Q-Q प्लॉट। चित्र: लेखक द्वारा

car पैकेज का उपयोग करके Q-Q प्लॉट बनाना

अब, car पैकेज का उपयोग करके Q-Q प्लॉट बनाते हैं। मेरी राय में, विज़ुअलाइज़ेशन की गुणवत्ता बहुत अलग नहीं है, लेकिन इस Q-Q प्लॉट का लाभ यह है कि यह एक कॉन्फिडेंस एन्वेलप दिखाता है, जो उस क्षेत्र को परिभाषित करता है जिसके भीतर हमारे डेटा पॉइंट्स आने की अपेक्षा होती है यदि नॉर्मलिटी की मॉडल मान्यता सही हो। 

# Install and load the 'car' package
# install.packages("car") # Uncomment this line if the 'car' package is not installed
library(car)

# Q-Q plot of residuals using the 'car' package
car::qqPlot(car_linear_model, main = "Q-Q Plot of Residuals from Linear Regression")

example Q-Q plot using the car package in RR में car पैकेज का उपयोग करके बनाया गया Q-Q प्लॉट। चित्र: लेखक द्वारा

ggplot2 का उपयोग करके Q-Q प्लॉट बनाना

अब अधिक लचीलापन और बेहतर रूप के लिए tidyverse तरीकों से Q-Q प्लॉट बनाना देखते हैं। इस बार, मैं Q-Q प्लॉट को अपने मूल स्कैटरप्लॉट के बगल में एक पैनल के रूप में रखूँगा।

# Load necessary libraries
library(tidyverse)
library(metBrewer)

# Clean and convert Power and Price columns to numeric
car_prices_jordan$Power <- as.numeric(gsub("[^0-9]", "", car_prices_jordan$Power))
car_prices_jordan$Price <- as.numeric(gsub("[^0-9]", "", car_prices_jordan$Price))

# Calculate slope and intercept for linear regression line
slope <- (cor(car_prices_jordan$Power, car_prices_jordan$Price) * 
           (sd(car_prices_jordan$Price)) / 
           sd(car_prices_jordan$Power))
intercept <- (mean(car_prices_jordan$Price) - slope * mean(car_prices_jordan$Power))

# Create scatter plot with regression line
car_prices_graph <- ggplot(car_prices_jordan, aes(x = Power, y = Price)) +
  geom_point() +
  ggtitle("Car Prices in Jordan") +
  geom_abline(slope = slope, intercept = intercept, color = '#376795', size = 1)

# Fit a linear model
car_linear_model <- lm(Price ~ Power, data = car_prices_jordan)

# Generate Q-Q plot for residuals
qq_plot <- ggplot(data = data.frame(resid = residuals(car_linear_model)), aes(sample = resid)) +
  stat_qq() +
  stat_qq_line(linetype = 'dashed', color = '#ef8a47', size = 1) +
  labs(
    title = "Car Prices in Jordan",
    subtitle = "Residual QQ Plot"
  )

# Combine scatter plot and Q-Q plot using patchwork
library(patchwork)
car_prices_graph + qq_plot

ggplot2 में बनाई गई लिनीयर रिग्रेशन और अवशेषों का Q-Q प्लॉट। चित्र: लेखक द्वारा

Q-Q प्लॉट हमें क्या बताता है

Q-Q प्लॉट में, अवलोकित डेटा के क्वांटाइल्स को सैद्धांतिक क्वांटाइल्स के विरुद्ध प्लॉट किया जाता है। यदि डेटा सैद्धांतिक वितरण का क़रीबी अनुसरण करता है, तो Q-Q प्लॉट के बिंदु एक तिरछी रेखा पर आएँगे। इस रेखा से विचलन अपेक्षित वितरण से दूरी को दर्शाते हैं। रेखा से ऊपर या नीचे गिरने वाले बिंदु स्क्यूनेस या आउट्लायर्स का संकेत देते हैं, और वक्र या s-आकार जैसे पैटर्न व्यवस्थित भिन्नताओं की ओर इशारा करते हैं, जैसे भारी या हल्की टेल्स।

हम आम तौर पर तीन चीज़ें देखते हैं। 

  • सीधी रेखा: डेटा सैद्धांतिक वितरण के साथ अच्छी तरह संरेखित है।
  • मुड़े हुए पैटर्न: स्क्यूड डेटा या नॉन-नॉर्मल वितरण का संकेत देते हैं।
  • भारी या हल्की टेल्स: यदि सिरों पर बिंदु विचलित होते हैं, तो डेटा में अपेक्षा से भारी या हल्की टेल्स हो सकती हैं।

आइए, प्रत्येक के लिए एक उदाहरण के साथ दिखाएँ:

Three Q-Q plots: one with a straight line; one with a curve; one with a heavy tail
तीन Q-Q प्लॉट्स: एक सीधी रेखा वाला; एक वक्र वाला; एक भारी टेल वाला। चित्र: लेखक द्वारा

पहले मामले में, Q-Q रेखा डेटा बिंदुओं से मेल खाती है, इसलिए वितरण वास्तव में नॉर्मल है। दूसरे मामले में, हम एक मुड़ा हुआ पैटर्न देखते हैं, इसलिए डेटा या तो नॉर्मल नहीं है या स्क्यूड है। आखिरी मामले में, हम एक तरह का ‘s’ आकार देखते हैं, इसलिए वितरण में भारी टेल्स या अधिक चरम मान हैं।

लिनीयर रिग्रेशन में Q-Q प्लॉट्स

कुछ अलग-अलग लिनीयर मॉडल मान्यताएँ होती हैं, जिनमें लिनियरिटी (कि चर के बीच संबंध लिनीयर है), त्रुटियों की स्वतंत्रता (कि त्रुटियाँ एक-दूसरे से सहसंबद्ध नहीं हैं), होमोस्स्केडैस्टिसिटी (कि अवशेषों का वैरिएंस स्थिर होना चाहिए), और अवशेषों की नॉर्मलिटी (कि अवशेष नॉर्मल वितरण का पालन करते हैं) शामिल हैं। Q-Q प्लॉट विशेष रूप से चौथी मान्यता—अवशेषों की नॉर्मलिटी—में मदद करता है। 

यहाँ बताया गया है कि अलग-अलग पैटर्न हमारे मॉडल की व्याख्या और विश्वसनीयता को कैसे प्रभावित करते हैं:

सीधी रेखा का संरेखण

  • मतलब क्या है: अवशेष लगभग नॉर्मल हैं, जो नॉर्मलिटी मान्यता के संदर्भ में मॉडल के अच्छे फिट की ओर संकेत करता है।
  • व्यावहारिक निहितार्थ: मॉडल से निकले कॉन्फिडेंस इंटरवल, p-वैल्यूज़ और हाइपोथिसिस टेस्ट संभवतः विश्वसनीय होंगे, क्योंकि वे नॉर्मली वितरित अवशेषों को मानते हैं।

मुड़े हुए पैटर्न

  • मतलब क्या है: मुड़ा हुआ Q-Q प्लॉट अक्सर नॉन-नॉर्मलिटी का संकेत देता है, जैसे अवशेषों में स्क्यूनेस। वक्र ऊपर या नीचे की ओर हो सकता है। (यह मुड़ा हुआ पैटर्न हम अपने ऊपर के उदाहरण में देख रहे हैं।)
  • व्यावहारिक निहितार्थ: नॉन-नॉर्मल अवशेष विशेष रूप से छोटे डेटासेट्स में p-वैल्यूज़ या कॉन्फिडेंस इंटरवल को बायस्ड बना सकते हैं। हमें आश्रित चर को ट्रांसफॉर्म करने या मॉडल संरचना पर पुनर्विचार करने पर विचार करना चाहिए।

भारी या हल्की टेल्स

  • मतलब क्या है: यदि भारी टेल्स हैं, तो अवशेषों में नॉर्मलिटी के तहत अपेक्षा से अधिक चरम मान हैं, संभवतः आउट्लायर्स के कारण, या फिर गलत मॉडल विनिर्देशन हो सकता है। यदि हल्की टेल्स हैं, तो इसका अर्थ है कि अपेक्षा से कम चरम अवशेष हैं, जो डेटा ट्रंकेशन का संकेत दे सकता है।
  • व्यावहारिक निहितार्थ: भारी टेल्स होने पर आउट्लायर्स रिग्रेशन रेखा को असंगत रूप से प्रभावित कर सकते हैं, जिससे भ्रामक परिणाम आ सकते हैं। हमें आउट्लायर्स को हटाने या उनका वज़न कम करने पर विचार करना चाहिए। हल्की टेल्स शायद मॉडल को उतना प्रभावित न करें, लेकिन यह संकेत हो सकता है कि डेटा किसी तरह से अपूर्ण है।

Q-Q प्लॉट्स और अन्य डायग्नॉस्टिक प्लॉट्स 

यदि आप लिनीयर मॉडल डायग्नॉस्टिक प्लॉट्स से परिचित हैं, तो आप यह भी जानते होंगे कि मॉडल फिट का आकलन करने के लिए कई विकल्प मौजूद हैं। यह समझने के लिए कि Q-Q प्लॉट वास्तव में क्या दिखा रहा है, आइए कुछ अन्य डायग्नॉस्टिक्स को देखें। इससे हमें बेहतर समझ आएगी कि Q-Q प्लॉट क्या कर रहा है और कौन से अन्य प्लॉट इसे पूरक कर सकते हैं।

  • फिटेड वैल्यूज़ बनाम अवशेष: यह प्लॉट भविष्यवाणी किए गए मानों (फिटेड वैल्यूज़) और अवशेषों के बीच संबंध दिखाता है, जो अवलोकित और भविष्यवाणी किए गए मानों के अंतर होते हैं।
  • अवशेषों का हिस्टोग्राम: यह प्लॉट अवशेषों का वितरण दिखाता है।
  • स्केल-लोकेशन प्लॉट: यह प्लॉट अवशेषों और फिटेड वैल्यूज़ के बीच संबंध दिखाता है।
  • लेवरेज बनाम स्टैन्डर्डाइज़्ड अवशेष: यह प्लॉट दर्शाता है कि प्रिडिक्टर स्पेस में कोई डेटा बिंदु कितना दूर है और मॉडल उसे अच्छा या खराब फिट करता है। हम अवशेषों को मानकीकृत करते हैं ताकि लेवरेज के साथ उनके संबंध का आकलन एकसमान स्केल पर किया जा सके।
  • ऑब्ज़र्वेशन नंबर बनाम कुक्स डिस्टेंस: यह प्लॉट लेवरेज और अवशेष के आकार को जोड़कर मॉडल पर सर्वाधिक समग्र प्रभाव वाले विशिष्ट डेटा बिंदुओं की पहचान करता है। x-अक्ष पर ऑब्ज़र्वेशन नंबर प्रत्येक डेटा बिंदु के लिए पहचानकर्ता का काम करता है.
  • लेवरेज बनाम कुक्स डिस्टेंस: यह प्लॉट किसी बिंदु की मॉडल को प्रभावित करने की संभावित क्षमता की तुलना उसके वास्तविक समग्र प्रभाव से करता है।

मैं आपको जल्दी से दिखाऊँगा कि tidyverse तरीकों का उपयोग करके प्रत्येक प्लॉट कैसे बनाया जाए। यहाँ उद्देश्य हमारे “कार्स इन जॉर्डन” डेटासेट से हर डायग्नॉस्टिक के लिए लिनीयर मॉडल की व्याख्या करना नहीं है। बल्कि, मैं अन्य डायग्नॉस्टिक प्लॉट्स दिखाना चाहता हूँ ताकि आप उन्हें पहचान सकें, ज़रूरत हो तो कोड का उपयोग कर सकें, और इस लेख के मकसद से, Q-Q प्लॉट को अन्य डायग्नॉस्टिक प्लॉट्स के बीच बेहतर ढंग से रख सकें। इस तरह, आप बेहतर समझेंगे कि Q-Q प्लॉट क्या दिखाता है और क्या नहीं, यह कैसे सहायक है और इसमें क्या कमियाँ हैं।

fitted_values_vs_residuals <- ggplot(data = car_linear_model, aes(x = .fitted, y = .resid)) +
    geom_point(color = '#203147') +
    geom_hline(yintercept = 0, linetype = "dashed", color = '#01ef63', size = 1) +
    xlab("fitted values") +
    ylab("residuals") +
    labs(title = "Cars in Jordan") +
    labs(subtitle = "Fitted Values vs Residuals")

histogram_of_residuals <- ggplot(data = car_linear_model, aes(x = .resid)) +
	geom_histogram(color = '#01ef63') +
	xlab("residuals") +
	labs(title = "Cars in Jordan") +
	labs(subtitle = "Histogram of Residuals")

scale_location <- ggplot(car_linear_model, aes(.fitted, sqrt(abs(.stdresid)))) +
	geom_point(color = '#203147', na.rm=TRUE) +
	stat_smooth(method="loess", na.rm = TRUE, color = '#01ef63', size = 1, se = FALSE) +
	xlab("Fitted Value") +
	ylab(expression(sqrt("|Standardized residuals|"))) +
	labs(title = "Cars in Jordan") +
	labs(subtitle = "Scale-Location")

leverage_vs_standardized_residuals <- ggplot(data = car_linear_model, aes(.hat, .stdresid)) +
	geom_point(aes(size = .cooksd), color = '#203147') +
	stat_smooth(method="loess", na.rm=TRUE, color = '#01ef63', size = 1) +
	xlab("Leverage") +
	ylab("Standardized Residuals") +
	labs(title = "Cars in Jordan") +
	labs(subtitle = "Residuals vs Leverage") +
scale_size_continuous("Cook's Distance", range=c(1,5)) +
	theme(legend.title = element_blank()) +
	theme(legend.position= "none")

observation_number_vs_cooks_distance <- ggplot(car_linear_model, aes(seq_along(.cooksd), .cooksd)) +
	geom_bar(stat="identity", position="identity", color = '#01ef63', size = 1) +
	xlab("Obs. Number") +
	ylab("Cook's distance") +
	labs(title = "Cars in Jordan") +
	labs(subtitle = "Cook's distance")

leverage_vs_cooks_distance <- ggplot(car_linear_model, aes(.hat, .cooksd))+geom_point(na.rm=TRUE) +
	stat_smooth(method="loess", na.rm=TRUE, color = '#01ef63', size = 1) +
	xlab("Leverage hii")+
	ylab("Cook's Distance") +
	labs(title = "Cars in Jordan") +
	labs(subtitle = "Cook's dist vs Leverage hii/(1-hii)") +
	geom_abline(slope=seq(0,3,0.5), color = "gray", linetype = "dotdash")
	   
library(patchwork)
fitted_values_vs_residuals + histogram_of_residuals

library(patchwork)
scale_location + leverage_vs_standardized_residuals

library(patchwork)
observation_number_vs_cooks_distance + leverage_vs_cooks_distance

Fitted values versus residuals; histogram of residuals

फिटेड वैल्यूज़ बनाम अवशेष; अवशेषों का हिस्टोग्राम। चित्र: लेखक द्वारा

Scale-location plot; leverage versus standardized residuals

स्केल-लोकेशन प्लॉट; लेवरेज बनाम स्टैन्डर्डाइज़्ड अवशेष। चित्र: लेखक द्वारा

Observation number versus Cook's distance; Cook's distance versus leverage

ऑब्ज़र्वेशन नंबर बनाम कुक्स डिस्टेंस; कुक्स डिस्टेंस बनाम लेवरेज। चित्र: लेखक द्वारा

शायद ऊपर दिए गए अतिरिक्त डायग्नॉस्टिक प्लॉट्स पर एक नज़र डालने से मुख्य संदेश यह है कि एक-दो बड़े आउट्लायर्स हैं जिनका रिग्रेशन रेखा की ढाल पर बड़ा प्रभाव पड़ रहा है, और ये आउट्लायर्स केवल Q-Q प्लॉट पर नज़र डालने से इतने स्पष्ट नहीं होते। तो हमारे उदाहरण में Q-Q प्लॉट अपना काम—अवशेषों की नॉर्मलिटी की जाँच—तो करता है, और साथ ही एक सीमा भी उजागर करता है, जो यह है कि यह स्वतंत्रता, होमोस्स्केडैस्टिसिटी, या आउट्लायर्स को संबोधित नहीं करता।

अतिरिक्त संदर्भ के लिए, मैं यहाँ एक उच्च-स्तरीय तालिका शामिल कर रहा हूँ जो दिखाती है कि प्रत्येक डायग्नॉस्टिक प्लॉट से किस लिनीयर मॉडल मान्यता की जाँच होती है, और मैं यह भी सुझा रहा हूँ कि अन्य डायग्नॉस्टिक प्लॉट्स Q-Q प्लॉट के साथ मिलकर कैसे काम कर सकते हैं। ध्यान रखें कि, डेटा के आधार पर, अलग-अलग प्रकार के पैटर्न अलग-अलग डायग्नॉस्टिक प्लॉट्स से उजागर हो सकते हैं, और कुछ बातें संयोजन में ही प्रकट हो सकती हैं। उदाहरण के लिए, एक Q-Q प्लॉट नॉर्मलिटी की पुष्टि कर सकता है, जबकि स्केल-लोकेशन प्लॉट हेटेरोस्स्केडैस्टिसिटी की पहचान कर सकता है, और आप केवल दोनों प्लॉट्स का उपयोग करके नॉर्मलिटी और हेटेरोस्स्केडैस्टिसिटी दोनों देख पाएँगे।

डायग्नॉस्टिक प्लॉट प्रकार किसमें मदद करता है Q-Q प्लॉट के साथ कैसे काम करता है
Q-Q प्लॉट अवशेषों की नॉर्मलिटी  
अवशेषों का हिस्टोग्राम अवशेषों की नॉर्मलिटी सममिति और फैलाव का त्वरित दृश्य और सामान्य धारणा देता है।
फिटेड वैल्यूज़ बनाम अवशेष लिनियरिटी, त्रुटियों की स्वतंत्रता पैटर्न और नॉन-लिनियरिटी को उजागर करता है, Q-Q प्लॉट की नॉर्मलिटी जाँच को पूरक करता है।
स्केल-लोकेशन प्लॉट होमोस्स्केडैस्टिसिटी अवशेष फैलाव की स्थिरता को हाईलाइट करता है, नॉर्मलिटी जाँच के लिए Q-Q प्लॉट का पूरक।
लेवरेज बनाम अवशेष प्लॉट त्रुटियों की स्वतंत्रता उच्च-लेवरेज बिंदुओं पर फोकस करता है, जिन्हें Q-Q प्लॉट संबोधित नहीं करता।
ऑब्ज़र्वेशन नंबर बनाम कुक्स डिस्टेंस प्रभावशाली बिंदुओं की पहचान उच्च प्रभाव वाले आउट्लायर्स का पता लगाकर Q-Q प्लॉट का पूरक।
लेवरेज बनाम कुक्स डिस्टेंस प्लॉट उच्च-लेवरेज बिंदुओं की पहचान प्रभावशाली ऑब्ज़र्वेशंस को हाईलाइट करता है, जबकि Q-Q प्लॉट नॉर्मलिटी को मान्य करता है।

अंतिम विचार

आशा है कि आप नॉर्मलिटी का आकलन करने के उपयोगी साधन के रूप में Q-Q प्लॉट्स के लिए एक नई सराहना लेकर जा रहे हैं और लिनीयर रिग्रेशन में अवशेषों की नॉर्मलिटी का आकलन करने में इसके सामान्य उपयोग को बेहतर समझते हैं। मुझे यह भी उम्मीद है कि आप सामान्य रूप से लिनीयर मॉडल डायग्नॉस्टिक्स के विचार और महत्व के लिए नई सराहना विकसित करेंगे। 

लिनीयर रिग्रेशन के बारे में सीखना जारी रखें हमारे Multiple Linear Regression in R: Tutorial With Examples के साथ, जो मल्टिपल प्रिडिक्टर्स वाले अधिक जटिल मॉडलों को कवर करता है, जिसमें रिग्रेशन में मल्टिकॉलीनियरिटी के विचार शामिल हैं। मैं दृढ़ता से सलाह देता हूँ कि हमारे पूर्ण और व्यापक करियर ट्रैक Machine Learning Scientist in Python में नामांकन करें, ताकि आप मॉडल-बिल्डिंग वर्कफ़्लो के बारे में, सुपरवाइज़्ड और अनसुपरवाइज़्ड लर्निंग सहित, सब कुछ सीख सकें।


Josef Waples's photo
Author
Josef Waples

मैं एक डेटा साइंस संपादक हूँ और वैज्ञानिक पत्रिकाओं में प्रकाशित शोध लेखों में योगदान दे चुका/चुकी हूँ। मुझे विशेष रूप से रैखिक बीजगणित, सांख्यिकी, R, और इसी तरह के विषयों में रुचि है।

Q-Q प्लॉट FAQs

Q-Q प्लॉट क्या है?

Q-Q प्लॉट, या Quantile-Quantile प्लॉट, एक दृश्य उपकरण है जिसका उपयोग किसी डेटासेट के वितरण की तुलना किसी सैद्धांतिक वितरण, जैसे नॉर्मल वितरण, से करने के लिए किया जाता है। 

क्या Q-Q प्लॉट और नॉर्मल Q-Q प्लॉट एक ही हैं?

नॉर्मल Q-Q प्लॉट, Q-Q प्लॉट का एक प्रकार है जिसमें एक डेटासेट की तुलना निर्दिष्ट पैरामीटर्स वाले नॉर्मल वितरण से की जाती है। इसका उपयोग यह आकलन करने के लिए किया जाता है कि कोई डेटासेट नॉर्मल वितरण का पालन करता है या नहीं। इसलिए, सभी नॉर्मल Q-Q प्लॉट्स Q-Q प्लॉट्स होते हैं, लेकिन सभी Q-Q प्लॉट्स नॉर्मल Q-Q प्लॉट्स नहीं होते।

विषय
डेटा विश्लेषण
R

DataCamp के साथ सीखें

कोर्स

Introduction to Regression in R

4 घंटा
79.5K
R में रिग्रेशन विश्लेषण लागू, विश्लेषित और व्याख्यायित करके आवास कीमतों और विज्ञापन क्लिक-थ्रू दर का अनुमान लगाएँ।
विवरण देखेंRight Arrow
पाठ्यक्रम शुरू करें
और देखेंRight Arrow