Methoden der zensierten Regression können solche Daten verarbeiten. Sie gehen davon aus, dass sich die Residuen wie bei der normalen linearen Regression verhalten, wurden jedoch so modifiziert
(Linke Zensur): Alle Werte, die kleiner als ein niedriger Schwellenwert sind, unabhängig von den Daten (aber von Fall zu Fall unterschiedlich sein können), wurden nicht quantifiziert. und / oder
(Richtige Zensur): Alle Werte, die größer als ein hoher Schwellenwert sind und von den Daten unabhängig sind (jedoch von Fall zu Fall variieren können), wurden nicht quantifiziert.
"Nicht quantifiziert" bedeutet, dass wir wissen, ob ein Wert unter (oder über) seiner Schwelle liegt, aber das ist alles.
Die Anpassungsmethoden verwenden normalerweise die maximale Wahrscheinlichkeit. Wenn das Modell für die Antwort , die einem Vektor X entspricht, in der Form vorliegtYX
Y∼Xβ+ε
mit iid einer gemeinsamen Verteilung F σ mit PDF f σ (wobei σ unknown "Belästigung parameter" ist), dann - in Abwesenheit von Zensieren - die Log - Likelihood von Beobachtungen ( x i , y i ) ist ,εFσfσσ(xi,yi)
Λ=∑i=1nlogfσ(yi−xiβ).
Mit gegenwärtigem Zensieren können wir die Fälle in drei (möglicherweise leeren) Klassen unterteilen: für Indizes bis n 1 , die y i die enthalten untere Schwellenwerten und repräsentiert links zensierten Daten; für die Indizes i = n 1 + 1 bis n 2 werden die y i quantifiziert; und für die übrigen Indizes enthalten die y i die oberen Schwellenwerte und repräsentieren rechts zensierti=1n1yii=n1+1n2yiyiDaten. Die logarithmische Wahrscheinlichkeit wird auf dieselbe Weise wie zuvor erhalten: Es ist das logarithmische Produkt der Wahrscheinlichkeiten.
Λ=∑i=1n1logFσ(yi−xiβ)+∑i=n1+1n2logfσ(yi−xiβ)+∑i=n2+1nlog(1−Fσ(yi−xiβ)).
(β,σ)
Nach meiner Erfahrung können solche Methoden gut funktionieren, wenn weniger als die Hälfte der Daten zensiert wird. Andernfalls können die Ergebnisse instabil sein.
Hier ist ein einfaches R
Beispiel , das das censReg
Paket verwendet, um zu veranschaulichen, wie sich OLS und zensierte Ergebnisse auch bei vielen Daten (stark) unterscheiden können. Es reproduziert qualitativ die Daten in der Frage.
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
Verwenden wir beide lm
und censReg
, um eine Linie anzupassen:
fit <- censReg(y.cen ~ x, data=data, left=0.0, right=0.01)
summary(fit)
Die Ergebnisse dieser zensierten Regression print(fit)
sind:
(Intercept) x sigma
-0.001028 0.004935 0.004856
−0.0010.0050.005
fit.OLS <- lm(y.cen ~ x, data=data)
summary(fit.OLS)
Die von gegebene OLS-Anpassung print(fit.OLS)
ist
(Intercept) x
0.001996 0.002345
summary
0.002864
Zum Vergleich beschränken wir die Regression auf die quantifizierten Daten:
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
Noch schlimmer!
Ein paar Bilder fassen die Situation zusammen.
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