Dies ist eine Einführung in eine Methode namens Divisionspunktregression.
Eine normale Regressionslinie kann als bedingte Erwartung (Mittelwert) von $ y $ bei $ x $ interpretiert werden, bei einer Bruchpunktregression jedoch als 25% oder 95% Bruchpunkt. Zeichnen wir eine Regressionslinie basierend auf dem in usw. verwendeten "Teilungspunkt" usw.
Wie auch immer, zuerst werde ich ein Diagramm damit zeichnen und versuchen, es zu visualisieren.
In diesem Fall ist die Fehlervarianz klein, wenn die erklärende Variable $ x $ klein ist, und die Fehlervarianz ist groß, wenn die erklärende Variable $ x $ groß ist. Ich versuche solche Daten zu generieren.
Bei der Teilungspunktregression werden für jeden Teilungspunkt unterschiedliche $ \ beta $ festgelegt, sodass jeder eine andere Steigung aufweist.
** Ausführungsergebnis der Teilungspunktregression ** Von unten 5%, 10%, 25%, 75%, 90%, 95% Teilungspunkt-Regressionslinie und normale Regressionslinie.
Generieren Sie zunächst Daten und zeichnen Sie ein Streudiagramm.
#Wenn nicht installiert, installieren Sie es.
#install.packages('quantreg')
library(quantreg)
b <- -5 #Gerade Neigung
a <- 35 #Gerader Abschnitt
data_x <- runif(500, 0, 5) # 0-Einheitliche Zufallszahl zwischen 5
data_y <- rep(0, length(data_x))
for (i in 1:length(data_x)){
#Sektion:a,Neigung:Ein Modell mit einem Fehler in der geraden Linie von b
data_y[i] <- b*data_x[i] + a + rnorm(1, mean=0, sd=1+ data_x[i]) #Stellen Sie die Verteilung abhängig von der Größe der erklärenden Variablen ein
}
#Zeichnen Sie ein Streudiagramm
plot(data_x, data_y, xlab="Random Variable", ylab="Random Variable",
type = "n", cex=.5, xlim=c(0, 5), ylim=c(0, 40))
points(data_x, data_y, cex=.5, col="blue")
Für diese generierten Daten wurde eine Teilungspunktregression bei 5%, 10%, 25%, 75%, 90% bzw. 95% durchgeführt und eine gerade Linie gezogen. Gleichzeitig wird auch das Ergebnis einer normalen linearen Regression gezeichnet und verglichen. In diesem Beispiel wird eine Normalverteilung für die Fehlerverteilung verwendet, und da sie bilateral symmetrisch ist, sind das Ergebnis der Regressionslinie des zentralen Werteteilungspunkts und der normalen linearen Regression, die den Mittelwert darstellen, nahezu gleich.
taus <- c(.05, ,.95, .10, .90, .25, .75) #Stellen Sie den Teilungspunkt ein
cols <- c(4, 3, 2, 2, 3, 4) #Färben Sie die geraden Linien separat
xx <- seq(min(data_x), max(data_x), .1)
f <- coef(rq( (data_y) ~ (data_x), tau=taus) ) #Ausführung der Divisionspunktregressionsberechnung
yy <- cbind(1,xx) %*% f
#Zeichnung der Teilungspunkt-Regressionslinie
for(i in 1:length(taus)){
lines(xx, yy[,i], col=cols[i]))
}
abline(lm(data_y ~ data_x), col="red", lty = 2, lw=2) #Zeichnen Sie eine normale Regressionslinie
abline(rq(data_y ~ data_x), col="black", lw=2) #Median(median)Zeichnen Sie eine Teilungspunkt-Regressionslinie von
legend(0, 8, c("mean (LSE) fit", "median (LAE) fit"), col = c("red","black"),lty = c(2, 1), lw=c(1, 2))
Im Fall einer bilateral symmetrischen Verteilung ist dies weniger interessant. Versuchen Sie daher, Daten mithilfe einer Exponentialverteilung mit einem langen Schwanz nach rechts zu generieren, und wenden Sie die Teilungspunktregression an.
Dann wird eine gerade Linie an einer Position gezeichnet, an der die Teilungspunktregression des Medianwerts, die durch die schwarze gerade Linie geteilt wird, plausibler ist als die gerade Linie der Methode der kleinsten Quadrate, die durch die rot gepunktete Linie dargestellt wird. Aufgrund der langen Saumverteilung sind die unteren Bereiche dicht und die oberen Bereiche weiter entfernt.
Generieren Sie Daten mit exponentieller Fehlerverteilung und zeichnen Sie ein Streudiagramm.
#Wenn nicht installiert, installieren Sie es.
#install.packages('quantreg')
library(quantreg)
# b :Gerade Neigung
# lambda :Exponentialverteilungsparameter
# taus :Liste ex definierter Teilungspunkte: c(.05, .95, .10, .90, .25,.75)
quant_reg_exp <- function(b, lambda, taus){
Dat <- NULL
Dat$x <- rnorm(100, mean=50, sd=7) #Erklärende Variablen sind durchschnittlich:50,Standardabweichung:Erzeugt mit einer Normalverteilung von 7
Dat$y <- rep(0, 100)
for (i in 1:length(Dat$x)){
Dat$y[i] <- b * Dat$x[i] + rexp(1, lambda) #Fehler gemäß Exponentialverteilung erzeugen
}
data_x = Dat$x
data_y = Dat$y
#Zeichnen Sie ein Streudiagramm
plot(data_x, data_y ,xlab="Random Variable", ylab="Random Variable", type="n", cex=.5)
points(data_x, data_y ,cex=.5, col="blue")
xx <- seq(min(data_x), max(data_x), .1)
f <- coef(rq((data_y)~(data_x), tau=taus)) #Ausführung der Divisionspunktregressionsberechnung
yy <- cbind(1,xx)%*%f
#Zeichnen Sie eine gerade Linie
cols <- c(2, 2, 3, 3, 4, 4)
for(i in 1:length(taus)){
lines(xx, yy[,i], col=cols[i])
}
abline(lm(data_y ~ data_x), col="red", lty=2) #Zeichnen Sie eine normale Regressionslinie
abline(rq(data_y ~ data_x), col="black", lw=2) #Median(median)Zeichnen Sie eine Teilungspunkt-Regressionslinie von
legend(min(data_x), max(data_y), c("mean (LSE) fit", "median (LAE) fit"),
col=c("red","black"), lty=c(2,1), lw=c(1,2))
}
# param: b, lambda, taus
quant_reg_exp(.5, .5, c(.05, .95, .10, .90, .25,.75))
Es ist nur eine Berührung, aber ich möchte die Punkte beschreiben, die sich von der Methode der minimalen Quadrate unterscheiden. Einzelheiten finden Sie in den unten aufgeführten Referenzen.
Die blaue Linie unten ist eine Zeichnung der Funktion $ 1/2 x ^ 2 $ und stellt die Funktion dar, die den Fehler bewertet, der bei der Methode der kleinsten Quadrate verwendet wird.
Die rote Linie zeichnet eine asymmetrische Absolutwertfunktion gemäß $ \ tau $, die als Funktion zur Bewertung des Fehlers der Teilungspunktregression verwendet wird. Die Fehlerauswertungsfunktion ändert sich entsprechend dem Teilungspunkt $ \ tau $.
Beides sind Funktionen zur Auswertung des Abstandes von 0 ab 0. Der Hauptpunkt besteht darin, den Abstand in negativer Richtung in positive Richtung zu ändern. Indem dies asymmetrisch gemacht wird, versucht die Teilungspunktregression, den angegebenen Teilungspunkt $ \ tau $ darzustellen, anstatt sich auf die Mitte zu verlassen.
(Der Zeichnungscode lautet hier. Dies ist in Python geschrieben ...)
Die Teilungspunkt-Regressionslinie $ \ hat {g_ {\ tau}} $ am Teilungspunkt $ \ tau $ kann wie folgt definiert werden. Das Problem besteht darin, $ g (\ cdot) $ zu finden, das den von der Funktion $ \ psi_ {\ tau} (\ cdot) $ bewerteten Fehler minimiert.
\hat{g_{\tau}} = \arg\min_{g \in \mathcal{G}} \sum_{i=1}^{n} \psi_{\tau} \{ y_i - g(x_i) \}
Zu diesem Zeitpunkt ist im Fall der Methode der kleinsten Quadrate die Funktion $ \ psi (\ cdot) $ (blaue Linie)
\psi_{\tau}(r) = {1 \over 2} r^2
Bei der Teilungspunktregression wird jedoch die folgende asymmetrische Absolutwertfunktion (rote Linie) verwendet, um den Fehler zu bewerten.
\psi_{\tau}(r) =
\begin{cases}
(\tau − 1)\ r & {\rm if}\ \ r \le 0\\
\tau r & {\rm if}\ \ 0 < r
\end{cases}
Nehmen wir nun eine lineare Funktion für $ g (\ cdot) $ an,
g(x_i) = \alpha + \beta x_i
Daher besteht das Problem darin, $ \ alpha, \ beta $ zu finden, das den Wert der Fehlerfunktion in der obigen Gleichung minimiert.
Der geschätzte Betrag von $ y $ sei $ \ hat {y} = g (x_i) $.
Außerdem sei die Fehlerdichtefunktion und die kumulative Dichtefunktion $ f (y), \ F (y) $. Das Bild unten ist abgebildet.
Die Fehlerfunktion $ L () $ ist unten definiert.
L(\hat{y}) = E[\psi_{\tau} \{ y_i - \hat{y} \} ]
= (\tau -1) \int_{-\infty}^{\hat{y}} (y-\hat{y})\ f(y) \ dy
+ \tau \int^{\infty}_{\hat{y}} (y-\hat{y})\ f(y)\ dy
Wenn die Fehlerfunktion $ L (\ cdot) $ durch $ \ hat {y} $ differenziert und auf 0 gesetzt wird,
{\partial L \over \partial \hat{y}} =
(\tau -1) \int_{-\infty}^{\hat{y}} (-1)\ f(y) \ dy
+ \tau \int^{\infty}_{\hat{y}} (-1)\ f(y) \ dy \\
= \int_{-\infty}^{\hat{y}}\ f(y) \ dy - \tau\ \left( \int_{-\infty}^{\hat{y}}\ f(y) \ dy + \int^{\infty}_{\hat{y}}\ f(y) \ dy \right) \\
= F(\hat{y}) - \tau = 0
Deshalb,
F(\hat{y}) = \tau
[1] ‘quantreg’ manual https://cran.r-project.org/web/packages/quantreg/quantreg.pdf
[2] Wikipedia "Quantile Regression" https://en.wikipedia.org/wiki/Quantile_regression
http://miuse.mie-u.ac.jp/bitstream/10076/10813/1/M2008288.pdf
http://www.okui.kier.kyoto-u.ac.jp/doc/quantile.pdf
http://reposit.sun.ac.jp/dspace/bitstream/10561/746/1/v43n4p87_nakamura.pdf
Recommended Posts