यद्यपि मैं यहाँ प्रश्न के साथ न्याय नहीं कर सकता हूँ - इसके लिए एक छोटे मोनोग्राफ की आवश्यकता होगी - यह कुछ प्रमुख विचारों को फिर से समझने में मददगार हो सकता है।
प्रश्न
आइए प्रश्न को बहाल करने और अस्पष्ट शब्दावली का उपयोग करके शुरू करें। डेटा का आदेश दिया जोड़ों की सूची से मिलकर बनता है । ज्ञात स्थिरांक और मानों को निर्धारित करते हैं और । हम एक मॉडल प्रस्तुत करते हैं जिसमें(ti,yi)(ti,yi) α1α1α2α2x1,i=exp(α1ti)x1,i=exp(α1ti)x2,i=exp(α2ti)x2,i=exp(α2ti)
yi=β1x1,i+β2x2,i+εi
yi=β1x1,i+β2x2,i+εi
के लिए स्थिरांक और , अनुमान लगाया जा करने के लिए यादृच्छिक रहे हैं, और - वैसे भी एक अच्छा सन्निकटन के लिए - स्वतंत्र और एक आम विचरण (जिसका आकलन ब्याज की भी है) हो रही है।β1β1β2β2εiεi
पृष्ठभूमि: रैखिक "मिलान"
Mosteller और Tukey का उल्लेख चर x 1 = ( x 1 , 1 , x 1 , 2 , … ) और x 2 के रूप में "मेल खाता है।" उन्हें विशिष्ट तरीके से y = ( y 1 , y 2 , ... ) के मूल्यों का "मिलान" करने के लिए उपयोग किया जाएगा , जिसे मैं चित्रित करूंगा। अधिक आम तौर पर, y और x को एक ही यूक्लिडियन सदिश स्थान में कोई भी दो वैक्टर, " y " और x की भूमिका निभाते हैं।x1(x1,1,x1,2,…)x2y=(y1,y2,…)yxyxकि "माचिस"। हम कई λ x द्वारा y लगभग अनुमानित करने के लिए एक गुणांक λ को व्यवस्थित रूप से अलग करने पर विचार करते हैं । सबसे अच्छा सन्निकटन तब प्राप्त होता है जब λ x यथासंभव y के करीब होता है। समान रूप से, y - λ x की चुकता लंबाई कम से कम है।λyλxλxyy−λx
इस मिलान प्रक्रिया की कल्पना करने का एक तरीका यह है कि x और y का एक स्कैल्पलॉट बनाया जाए जिस पर x → λ x का ग्राफ खींचा जाए । स्कैप्लेट पॉइंट्स और इस ग्राफ के बीच की ऊर्ध्वाधर दूरियाँ अवशिष्ट वेक्टर y के घटक हैं - λ x ; उनके वर्गों का योग यथासंभव छोटा किया जाना है। आनुपातिकता के एक निरंतरता तक, ये वर्ग उन बिंदुओं पर केंद्रित हलकों के क्षेत्र हैं ( x i , y i ) जो अवशिष्ट के बराबर त्रिज्या के साथ हैं: हम इन सभी मंडलियों के क्षेत्रों का योग कम से कम करना चाहते हैं।xyx→λx y−λx(xi,yi)
मध्य पैनल में λ का इष्टतम मान दिखाने वाला एक उदाहरण यहां दिया गया है :λ
स्कैप्लॉट में बिंदु नीले हैं; x → λ x का ग्राफ एक लाल रेखा है। यह दृष्टांत इस बात पर जोर देता है कि लाल रेखा मूल ( 0 , 0 ) से होकर गुजरने के लिए विवश है : यह लाइन फिटिंग का एक विशेष मामला है।x→λx(0,0)
अनुक्रमिक मिलान द्वारा एकाधिक प्रतिगमन प्राप्त किया जा सकता है
प्रश्न की सेटिंग पर लौटते हुए, हमारे पास एक लक्ष्य y और दो माचिस x 1 और x 2 हैं । हम संख्या की तलाश ख 1 और बी 2 , जिसके लिए y द्वारा यथासंभव करीबी रूप से अनुमानित किया गया है ख 1 एक्स 1 + ख 2 एक्स 2 कम से कम दूरी की भावना में फिर से,। एक्स 1 के साथ मनमाने ढंग से शुरुआत करते हुए , मोस्टलेर और टुकी शेष चर x 2 और y से x 1 से मेल खाते हैंyx1x2b1b2yb1x1+b2x2x1x2yx1। के रूप में इन मैचों के लिए बच गया लिखें एक्स 2 ⋅ 1 और y ⋅ 1 क्रमश: ⋅ 1 इंगित करता है कि एक्स 1 की गई चर "से बाहर ले जाया" किया है।x2⋅1y⋅1⋅1x1
हम लिख सकते है
y = λ 1 एक्स 1 + y ⋅ 1 और एक्स 2 = λ 2 एक्स 1 + x 2 ⋅ 1 ।
y=λ1x1+y⋅1 and x2=λ2x1+x2⋅1.
लेने के बाद एक्स 1 से बाहर एक्स 2 और y , हम लक्ष्य बच मिलान करने के लिए आगे बढ़ना y ⋅ 1 मिलान बच करने के लिए x 2 ⋅ 1 । अंतिम बच रहे हैं y ⋅ 12 । बीजगणितीय रूप से, हमने लिखा हैx1x2yy⋅1x2⋅1y⋅12
y ⋅ 1 = λ 3 एक्स 2 ⋅ 1 + y ⋅ 12 ; जिस कारण से y = λ 1 एक्स 1 + y ⋅ 1 = λ 1 एक्स 1 + λ 3 एक्स 2 ⋅ 1 + y ⋅ 12 = λ 1 एक्स 1 + λ 3 ( एक्स 2 - λ 2 एक्स 1 ) +y ⋅ 12= ( Λ 1 - λ 3 λ 2 ) एक्स 1 + λ 3 एक्स 2 + y ⋅ 12 ।
y⋅1y=λ3x2⋅1+y⋅12; whence=λ1x1+y⋅1=λ1x1+λ3x2⋅1+y⋅12=λ1x1+λ3(x2−λ2x1)+y⋅12=(λ1−λ3λ2)x1+λ3x2+y⋅12.
इससे पता चलता है कि अंतिम चरण में λ 3 x 1 और x 2 से y के मिलान में x 2 का गुणांक है ।λ3x2x1x2y
हम बस के रूप में अच्छी तरह से पहले लेने से रवाना किया जा सकता था एक्स 2 से बाहर एक्स 1 और y , उत्पादन एक्स 1 ⋅ 2 और y ⋅ 2 , और फिर लेने एक्स 1 ⋅ 2 से बाहर y ⋅ 2 , बच का एक अलग सेट उपज y ⋅ २१ । इस बार, के गुणांक एक्स 1 अंतिम चरण में पाया - के फोन यह जाने μ 3 के गुणांक --is एक्स 1 का मिलान में एक्स 1 औरx2x1yx1⋅2y⋅2x1⋅2y⋅2y⋅21x1μ3x1x1x2x2 to yy.
Finally, for comparison, we might run a multiple (ordinary least squares regression) of yy against x1x1 and x2x2. Let those residuals be y⋅lmy⋅lm. It turns out that the coefficients in this multiple regression are precisely the coefficients μ3μ3 and λ3λ3 found previously and that all three sets of residuals, y⋅12y⋅12, y⋅21y⋅21, and y⋅lmy⋅lm, are identical.
Depicting the process
इसमें से कोई भी नया नहीं है: यह सब पाठ में है। मैं एक सचित्र विश्लेषण की पेशकश करना चाहूंगा, जो हमने अब तक प्राप्त की गई सभी चीजों के एक बिखरे हुए मैट्रिक्स का उपयोग करके किया है।
क्योंकि इन डेटा प्रेरित होती है, हमने अंतर्निहित "सही" का मान दिखाने के लक्जरी है y पिछले पंक्ति और स्तंभ पर: इन मूल्यों हैं बीटा 1 एक्स 1 + β 2 एक्स 2 में जोड़ा त्रुटि के बिना।yβ1x1+β2x2
विकर्ण के नीचे के स्क्रैपप्लेट्स को मैचर्स के ग्राफ के साथ सजाया गया है, बिल्कुल पहले आंकड़े की तरह। शून्य ढलान वाले रेखांकन लाल रंग में खींचे जाते हैं: ये उन स्थितियों को इंगित करते हैं जहां मिलान करने वाला हमें कुछ भी नया नहीं देता; अवशिष्ट लक्ष्य के समान हैं। इसके अलावा, संदर्भ के लिए, मूल (जहां भी यह एक भूखंड के भीतर दिखाई देता है) एक खुले लाल सर्कल के रूप में दिखाया गया है: याद रखें कि सभी संभव मिलान लाइनों को इस बिंदु से गुजरना होगा।
इस भूखंड का अध्ययन करके प्रतिगमन के बारे में बहुत कुछ सीखा जा सकता है। हाइलाइट्स में से कुछ हैं:
The matching of x2x2 to x1x1 (row 2, column 1) is poor. This is a good thing: it indicates that x1x1 and x2x2 are providing very different information; using both together will likely be a much better fit to yy than using either one alone.
Once a variable has been taken out of a target, it does no good to try to take that variable out again: the best matching line will be zero. See the scatterplots for x2⋅1x2⋅1 versus x1x1 or y⋅1y⋅1 versus x1x1, for instance.
The values x1x1, x2x2, x1⋅2x1⋅2, and x2⋅1x2⋅1 have all been taken out of y⋅lmy⋅lm.
Multiple regression of yy against x1x1 and x2x2 can be achieved first by computing y⋅1y⋅1 and x2⋅1x2⋅1. These scatterplots appear at (row, column) = (8,1)(8,1) and (2,1)(2,1), respectively. With these residuals in hand, we look at their scatterplot at (4,3)(4,3). These three one-variable regressions do the trick. As Mosteller & Tukey explain, the standard errors of the coefficients can be obtained almost as easily from these regressions, too--but that's not the topic of this question, so I will stop here.
Code
These data were (reproducibly) created in R
with a simulation. The analyses, checks, and plots were also produced with R
. This is the code.
#
# Simulate the data.
#
set.seed(17)
t.var <- 1:50 # The "times" t[i]
x <- exp(t.var %o% c(x1=-0.1, x2=0.025) ) # The two "matchers" x[1,] and x[2,]
beta <- c(5, -1) # The (unknown) coefficients
sigma <- 1/2 # Standard deviation of the errors
error <- sigma * rnorm(length(t.var)) # Simulated errors
y <- (y.true <- as.vector(x %*% beta)) + error # True and simulated y values
data <- data.frame(t.var, x, y, y.true)
par(col="Black", bty="o", lty=0, pch=1)
pairs(data) # Get a close look at the data
#
# Take out the various matchers.
#
take.out <- function(y, x) {fit <- lm(y ~ x - 1); resid(fit)}
data <- transform(transform(data,
x2.1 = take.out(x2, x1),
y.1 = take.out(y, x1),
x1.2 = take.out(x1, x2),
y.2 = take.out(y, x2)
),
y.21 = take.out(y.2, x1.2),
y.12 = take.out(y.1, x2.1)
)
data$y.lm <- resid(lm(y ~ x - 1)) # Multiple regression for comparison
#
# Analysis.
#
# Reorder the dataframe (for presentation):
data <- data[c(1:3, 5:12, 4)]
# Confirm that the three ways to obtain the fit are the same:
pairs(subset(data, select=c(y.12, y.21, y.lm)))
# Explore what happened:
panel.lm <- function (x, y, col=par("col"), bg=NA, pch=par("pch"),
cex=1, col.smooth="red", ...) {
box(col="Gray", bty="o")
ok <- is.finite(x) & is.finite(y)
if (any(ok)) {
b <- coef(lm(y[ok] ~ x[ok] - 1))
col0 <- ifelse(abs(b) < 10^-8, "Red", "Blue")
lwd0 <- ifelse(abs(b) < 10^-8, 3, 2)
abline(c(0, b), col=col0, lwd=lwd0)
}
points(x, y, pch = pch, col="Black", bg = bg, cex = cex)
points(matrix(c(0,0), nrow=1), col="Red", pch=1)
}
panel.hist <- function(x, ...) {
usr <- par("usr"); on.exit(par(usr))
par(usr = c(usr[1:2], 0, 1.5) )
h <- hist(x, plot = FALSE)
breaks <- h$breaks; nB <- length(breaks)
y <- h$counts; y <- y/max(y)
rect(breaks[-nB], 0, breaks[-1], y, ...)
}
par(lty=1, pch=19, col="Gray")
pairs(subset(data, select=c(-t.var, -y.12, -y.21)), col="Gray", cex=0.8,
lower.panel=panel.lm, diag.panel=panel.hist)
# Additional interesting plots:
par(col="Black", pch=1)
#pairs(subset(data, select=c(-t.var, -x1.2, -y.2, -y.21)))
#pairs(subset(data, select=c(-t.var, -x1, -x2)))
#pairs(subset(data, select=c(x2.1, y.1, y.12)))
# Details of the variances, showing how to obtain multiple regression
# standard errors from the OLS matches.
norm <- function(x) sqrt(sum(x * x))
lapply(data, norm)
s <- summary(lm(y ~ x1 + x2 - 1, data=data))
c(s$sigma, s$coefficients["x1", "Std. Error"] * norm(data$x1.2)) # Equal
c(s$sigma, s$coefficients["x2", "Std. Error"] * norm(data$x2.1)) # Equal
c(s$sigma, norm(data$y.12) / sqrt(length(data$y.12) - 2)) # Equal