सेंसर रिग्रेशन के तरीके इस तरह से डेटा को हैंडल कर सकते हैं। वे मानते हैं कि अवशिष्ट सामान्य रैखिक प्रतिगमन के रूप में व्यवहार करते हैं लेकिन उन्हें संशोधित किया गया है
(बाएं सेंसरिंग): कम सीमा से छोटे सभी मान, जो डेटा से स्वतंत्र हैं, (लेकिन एक मामले से दूसरे में भिन्न हो सकते हैं) की मात्रा निर्धारित नहीं की गई है; और / या
(राइट सेंसरिंग): एक उच्च सीमा से बड़े सभी मान, जो डेटा से स्वतंत्र हैं (लेकिन एक मामले से दूसरे में भिन्न हो सकते हैं) की मात्रा निर्धारित नहीं की गई है।
"मात्रा निर्धारित नहीं" का अर्थ है कि हम जानते हैं कि इसकी सीमा से नीचे (या ऊपर) कोई मूल्य आता है या नहीं, लेकिन यह सब है।
फिटिंग के तरीके आमतौर पर अधिकतम संभावना का उपयोग करते हैं। जब सदिश X के अनुक्रिया लिए मॉडल रूप में होता हैYX
Y∼Xβ+ε
आईआईडी साथ एक सामान्य वितरण होने एफ σ साथ पीडीएफ च σ (जहां σ अज्ञात "उपद्रव पैरामीटर" कर रहे हैं), तो - पर रोक लगाए के अभाव में - टिप्पणियों के लॉग संभावना ( एक्स मैं , y मैं ) हैεFσfσσ(xi,yi)
Λ=∑i=1nlogfσ(yi−xiβ).
वर्तमान में काट-छाँट के साथ हम तीन में मामलों को विभाजित कर सकते हैं (संभवतः खाली) वर्ग: अनुक्रमणिका के लिए के लिए एन 1 , y मैं शामिल कम दहलीज मूल्यों और प्रतिनिधित्व करते हैं छोड़ दिया सेंसर डेटा; अनुक्रमित के लिए i = n 1 + 1 से n 2 , y मैं परिमाणित हैं; और शेष अनुक्रमित के लिए, y मैं शामिल ऊपरी सीमा मूल्यों और का प्रतिनिधित्व करते हैं सही सेंसरi=1n1yii=n1+1n2yiyiडेटा। लॉग संभावना को पहले की तरह ही प्राप्त किया जाता है: यह संभावनाओं के उत्पाद का लॉग है।
Λ=∑i=1n1logFσ(yi−xiβ)+∑i=n1+1n2logfσ(yi−xiβ)+∑i=n2+1nlog(1−Fσ(yi−xiβ)).
(β,σ)
मेरे अनुभव में, ऐसे तरीके अच्छी तरह से काम कर सकते हैं जब आधे से कम डेटा सेंसर हो; अन्यथा, परिणाम अस्थिर हो सकते हैं।
यहां एक सरल Rउदाहरण है कि censRegपैकेज का उपयोग करके बताया गया है कि कैसे ओएलएस और सेंसर किए गए परिणाम अलग-अलग (बहुत) डेटा के साथ भी भिन्न हो सकते हैं। यह गुणात्मक रूप से प्रश्न में डेटा को पुन: पेश करता है।
library("censReg")
set.seed(17)
n.data <- 2960
coeff <- c(-0.001, 0.005)
sigma <- 0.005
x <- rnorm(n.data, 0.5)
y <- as.vector(coeff %*% rbind(rep(1, n.data), x) + rnorm(n.data, 0, sigma))
y.cen <- y
y.cen[y < 0] <- 0
y.cen[y > 0.01] <- 0.01
data = data.frame(list(x, y.cen))
0.005−0.0010.005
चलो दोनों का उपयोग करें lmऔर censRegएक पंक्ति फिट करने के लिए:
fit <- censReg(y.cen ~ x, data=data, left=0.0, right=0.01)
summary(fit)
द्वारा दिए गए इस सेंसर रिग्रेशन के परिणाम print(fit)हैं
(Intercept) x sigma
-0.001028 0.004935 0.004856
−0.0010.0050.005
fit.OLS <- lm(y.cen ~ x, data=data)
summary(fit.OLS)
द्वारा दिया गया ओएलएस फिट print(fit.OLS)है
(Intercept) x
0.001996 0.002345
summary0.002864
तुलना के लिए, चलो प्रतिगमन को परिमाणित डेटा तक सीमित करते हैं:
fit.part <- lm(y[0 <= y & y <= 0.01] ~ x[0 <= y & y <= 0.01])
summary(fit.part)
(Intercept) x[0 <= y & y <= 0.01]
0.003240 0.001461
और भी बदतर!
कुछ तस्वीरें स्थिति को सारांशित करती हैं।
lineplot <- function() {
abline(coef(fit)[1:2], col="Red", lwd=2)
abline(coef(fit.OLS), col="Blue", lty=2, lwd=2)
abline(coef(fit.part), col=rgb(.2, .6, .2), lty=3, lwd=2)
}
par(mfrow=c(1,4))
plot(x,y, pch=19, cex=0.5, col="Gray", main="Hypothetical Data")
lineplot()
plot(x,y.cen, pch=19, cex=0.5, col="Gray", main="Censored Data")
lineplot()
hist(y.cen, breaks=50, main="Censored Data")
hist(y[0 <= y & y <= 0.01], breaks=50, main="Quantified Data")

00.01
Y0.00320.0037