दो या अधिक प्रतिगमन मॉडल से ढलानों की तुलना करने के लिए मैं किस परीक्षण का उपयोग कर सकता हूं?


29

मैं एक भविष्यवक्ता को दो चर की प्रतिक्रिया में अंतर का परीक्षण करना चाहूंगा। यहाँ एक न्यूनतम प्रजनन योग्य उदाहरण है।

library(nlme) 
## gls is used in the application; lm would suffice for this example
m.set <- gls(Sepal.Length ~ Petal.Width, data = iris, 
               subset = Species == "setosa")
m.vir <- gls(Sepal.Length ~ Petal.Width, data = iris, 
               subset = Species == "virginica")
m.ver <- gls(Sepal.Length ~ Petal.Width, data = iris, 
               subset = Species == "versicolor")

मैं देख सकता हूं कि ढलान गुणांक अलग हैं:

m.set$coefficients
(Intercept) Petal.Width 
  4.7771775   0.9301727
m.vir$coefficients
(Intercept) Petal.Width 
  5.2694172   0.6508306 
m.ver$coefficients
(Intercept) Petal.Width 
   4.044640    1.426365 

मेरे तीन सवाल हैं:

  1. मैं ढलानों के बीच अंतर का परीक्षण कैसे कर सकता हूं?
  2. मैं अवशिष्ट भिन्नताओं के बीच अंतर का परीक्षण कैसे कर सकता हूं?
  3. इन तुलनाओं को प्रस्तुत करने का एक सरल, प्रभावी तरीका क्या है?

एक संबंधित प्रश्न, दो प्रतिगमन मॉडल में चर गुणांक की तुलना करने की विधि , ढलानों को अलग करने के लिए डमी चर के साथ मॉडल को फिर से चलाने का सुझाव देती है, क्या ऐसे विकल्प हैं जो स्वतंत्र डेटा सेट के उपयोग की अनुमति देंगे?


पहले प्रश्न के संबंध में आंकड़े देखें ।stackexchange.com/questions/55501/…
रुसैलपिएरेसे

जवाबों:


22

मैं ढलानों के बीच अंतर का परीक्षण कैसे कर सकता हूं?

प्रजातियों के लिए एक डमी शामिल करें, इसे के साथ , और देखें कि क्या यह डमी महत्वपूर्ण है। बता दें कि लंबाई है और पेडल चौड़ाई और तीन प्रजातियों के लिए डमी वैरिएबल हैं। मॉडल की तुलना करेंएल मैं पी मैं एस 1 , एस 2 , एस 3पीमैंएलमैंपीमैंएस1,एस2,एस3

(एलमैं)=β0+β1पीमैं

मॉडल के साथ जो के प्रभाव को प्रत्येक प्रजाति के लिए अलग करने की अनुमति देता है :पीमैं

(एलमैं)=α0+α1एस2+α2एस3+α4पीमैं+α5पीमैंएस2+α6पीमैंएस3

GLS के अनुमानक MLE हैं और पहला मॉडल दूसरे पर एक सबमॉडल है, इसलिए आप यहां संभावना अनुपात परीक्षण का उपयोग कर सकते हैं। logLikफ़ंक्शन का उपयोग करके संभावनाएं निकाली जा सकती हैं और परीक्षण के लिए स्वतंत्रता की डिग्री होगी क्योंकि आपने सबमॉडल पर पहुंचने के लिए मापदंडों को हटा दिया है ।44

तुलना प्रस्तुत करने का एक सरल, प्रभावी तरीका क्या है?

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

संपादित करें: मैंने देखा कि एक और सवाल शरीर में जोड़ा गया है। तो, मैं उस के लिए एक जवाब जोड़ रहा हूँ:

मैं अवशिष्ट भिन्नताओं के बीच अंतर का परीक्षण कैसे कर सकता हूं?

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

  • यदि आप केवल मुख्य प्रभावों को छोड़ते हुए विचरण का परीक्षण करना चाहते हैं, तो "नल" मॉडल को उन इंटरैक्शन के साथ मॉडल होना चाहिए जो मैंने ऊपर लिखा है। परीक्षण के लिए स्वतंत्रता की डिग्री ।2

  • यदि आप गुणांक के साथ संयुक्त रूप से विचरण का परीक्षण करना चाहते हैं, तो अशक्त मॉडल पहला मॉडल होना चाहिए जो मैंने ऊपर लिखा है। परीक्षण के लिए स्वतंत्रता की डिग्री ।6


दूसरे मॉडल में कोई क्यों नहीं है ? है आर में मॉडल के सही कार्यान्वयन? एस1gls(Sepal.Length ~ species:Petal.Width, data = iris)
अबे

एस1α0+α4पीमैंspeciesgls(Sepal.Length ~ species*Petal.Width, data=iris)

@ मैक्रो अच्छा जवाब (+1)! मुझे आश्चर्य है कि क्या आप glsमॉडल को फिट कर सकते हैं लेकिन विकल्प के साथ प्रत्येक प्रजाति के लिए अलग-अलग अवशिष्ट संस्करण की अनुमति है weights=varIdent(form=~1|Species)(दूसरे प्रश्न के बारे में)?
COOLSerdash

15

आर कोड के साथ इन सवालों का जवाब देने के लिए, निम्नलिखित का उपयोग करें:
1. मैं ढलानों के बीच अंतर का परीक्षण कैसे कर सकता हूं?
उत्तर: पेटा की बातचीत से एनोवा पी-वैल्यू की जांच करें। प्रजातियों के अनुसार, फिर गालियों का उपयोग करते हुए ढलानों की तुलना करें: lstrends, निम्नानुसार।

library(lsmeans)
m.interaction <- lm(Sepal.Length ~ Petal.Width*Species, data = iris)
anova(m.interaction)
 Analysis of Variance Table

 Response: Sepal.Length
                      Df Sum Sq Mean Sq  F value Pr(>F)    
 Petal.Width           1 68.353  68.353 298.0784 <2e-16 ***
 Species               2  0.035   0.017   0.0754 0.9274    
 Petal.Width:Species   2  0.759   0.380   1.6552 0.1947    
 Residuals           144 33.021   0.229                    
 ---
 Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

# Obtain slopes
m.interaction$coefficients
m.lst <- lstrends(m.interaction, "Species", var="Petal.Width")
 Species    Petal.Width.trend        SE  df   lower.CL upper.CL
 setosa             0.9301727 0.6491360 144 -0.3528933 2.213239
 versicolor         1.4263647 0.3459350 144  0.7425981 2.110131
 virginica          0.6508306 0.2490791 144  0.1585071 1.143154

# Compare slopes
pairs(m.lst)
 contrast                 estimate        SE  df t.ratio p.value
 setosa - versicolor    -0.4961919 0.7355601 144  -0.675  0.7786
 setosa - virginica      0.2793421 0.6952826 144   0.402  0.9149
 versicolor - virginica  0.7755341 0.4262762 144   1.819  0.1669

2. मैं अवशिष्ट भिन्नताओं के बीच अंतर का परीक्षण कैसे कर सकता हूं?
यदि मैं इस प्रश्न को समझता हूं, तो आप एक फिशर ट्रांसफॉर्मेशन के साथ पियर्सन के सहसंबंधों की तुलना कर सकते हैं, जिसे "फिशर आर-टू-जेड" भी कहा जाता है, इस प्रकार है।

library(psych)
library(data.table)
iris <- as.data.table(iris)
# Calculate Pearson's R
m.correlations <- iris[, cor(Sepal.Length, Petal.Width), by = Species]
m.correlations
# Compare R values with Fisher's R to Z
paired.r(m.correlations[Species=="setosa", V1], m.correlations[Species=="versicolor", V1], 
         n = iris[Species %in% c("setosa", "versicolor"), .N])
paired.r(m.correlations[Species=="setosa", V1], m.correlations[Species=="virginica", V1], 
         n = iris[Species %in% c("setosa", "virginica"), .N])
paired.r(m.correlations[Species=="virginica", V1], m.correlations[Species=="versicolor", V1], 
         n = iris[Species %in% c("virginica", "versicolor"), .N])

3. इन तुलनाओं को प्रस्तुत करने का एक सरल, प्रभावी तरीका क्या है?
"हम प्रत्येक प्रजाति के लिए पेटल चौड़ाई को बाह्यदल लंबाई के रिश्ते की तुलना करने के रेखीय प्रतीपगमन इस्तेमाल किया। हम के लिए पेटल चौड़ाई को बाह्यदल लंबाई के संबंधों में एक महत्वपूर्ण बातचीत नहीं मिला मैं Setosa (बी = 0.9), मैं Versicolor (बी = 1.4), न ही आई। वर्जिनिका (बी = 0.6); एफ (2, 144) = 1.6, पी = 0.19। एक फिशर की आर-टू-जेड तुलना ने संकेत दिया कि आई। सेटोसा (आर = 0.28) के लिए पियर्सन सहसंबंध था। I. वर्सिकलर (r = 0.55 ) की तुलना में काफी कम (p = 0.02) । इसी तरह I. Virginica (r = 0.28) का सहसंबंध भी काफी कमजोर था । "

अंत में, हमेशा अपने परिणामों की कल्पना करें!

plotly_interaction <- function(data, x, y, category, colors = col2rgb(viridis(nlevels(as.factor(data[[category]])))), ...) {
  # Create Plotly scatter plot of x vs y, with separate lines for each level of the categorical variable. 
  # In other words, create an interaction scatter plot.
  # The "colors" must be supplied in a RGB triplet, as produced by col2rgb().

  require(plotly)
  require(viridis)
  require(broom)

  groups <- unique(data[[category]])

  p <- plot_ly(...)

  for (i in 1:length(groups)) {
    groupData = data[which(data[[category]]==groups[[i]]), ]
    p <- add_lines(p, data = groupData,
                   y = fitted(lm(data = groupData, groupData[[y]] ~ groupData[[x]])),
                   x = groupData[[x]],
                   line = list(color = paste('rgb', '(', paste(colors[, i], collapse = ", "), ')')),
                   name = groups[[i]],
                   showlegend = FALSE)
    p <- add_ribbons(p, data = augment(lm(data = groupData, groupData[[y]] ~ groupData[[x]])),
                     y = groupData[[y]],
                     x = groupData[[x]],
                     ymin = ~.fitted - 1.96 * .se.fit,
                     ymax = ~.fitted + 1.96 * .se.fit,
                     line = list(color = paste('rgba','(', paste(colors[, i], collapse = ", "), ', 0.05)')), 
                     fillcolor = paste('rgba', '(', paste(colors[, i], collapse = ", "), ', 0.1)'),
                     showlegend = FALSE)
    p <- add_markers(p, data = groupData, 
                     x = groupData[[x]], 
                     y = groupData[[y]],
                     symbol = groupData[[category]],
                     marker = list(color=paste('rgb','(', paste(colors[, i], collapse = ", "))))
  }
  p <- layout(p, xaxis = list(title = x), yaxis = list(title = y))
  return(p)
}

plotly_interaction(iris, "Sepal.Length", "Petal.Width", "Species")

irisPlot


8

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


ऐसा लगता है कि हमने लगभग एक ही समय में काफी समान उत्तर पोस्ट किए हैं। +1
मैक्रो

@ माकारो, हाँ, लेकिन तुम्हारा ज्यादातर बेहतर है (पहले पहले); आपने उन सभी 3 प्रश्नों को संबोधित किया है जो मैंने प्रश्न के पहले (पूरी तरह से नहीं) पढ़ने पर याद किया। यहां मेरा योगदान कंफ्यूजन का हिस्सा है।
गंग -

हाँ यह एक अच्छी बात है। मुझे लगता है कि अगर आप यह जांच कर रहे थे, तो आपको इस धारणा के तहत काम करना होगा कि डेटा सेट एक ही चीज़ को माप रहे थे, आदि ... केवल अंतर होने के कारण कि प्रजातियां अलग थीं।
मैक्रो

3
मेरे सोचने के तरीके से आप दोनों को उठना चाहिए जो मैं कर रहा हूं।
माइकल आर। चेरिक जूल

1
डमी वैरिएबल सुझाव एक अच्छा है बशर्ते कि त्रुटि विचरण मॉडल के बीच प्रशंसनीय रूप से भिन्न न हो। अन्यथा आप Satterthwaite-Welch t-test (जो केवल सारांश आँकड़े ज्ञात होने पर उपलब्ध होने का विलक्षण लाभ है, को लागू कर सकते हैं, जैसा कि अक्सर प्रकाशित पत्र पढ़ते समय होता है) या संयुक्त मॉडल को फिट करने के लिए भारित कम से कम वर्गों का उपयोग करें।
फुबेर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.