HOWTO · R
Stückweise Regression in R
Dieses Tutorial zeigt, wie Sie eine stückweise Regression in R durchführen.
Die stückweise Regression wird verwendet, wenn es klare Haltepunkte in den Daten gibt. Dieses Tutorial zeigt, wie Sie eine stückweise Regression in R durchführen.
Stückweise Regression in R
Wenn es klare Bruchstellen in den Daten gibt, ist die funktionierende Regression die stückweise Regression. Die stückweise Regression ist der schrittweise Prozess, wie unten gezeigt:
-
Erstellen Sie den Datenrahmen.
-
Passen Sie das lineare Regressionsmodell für die Daten an. Wir können dies mit der Methode
lm()tun. -
Passen Sie das stückweise Regressionsmodell an. Die Methode
segmented()aus dem Paketsegmentedwird verwendet, um das stückweise Regressionsmodell anzupassen. -
Visualisieren Sie das endgültige stückweise Regressionsmodell mit der Methode
plot().
Versuchen wir nun ein Beispiel mit den obigen Schritten. Siehe Beispiel:
#Step 1
#create the DataFrame
data<-read.table(text="
Year Stopped
2015 973
2016 1025
2017 1151
2018 1384
2019 4507
2020 15557
", header=T, sep="")
#first six rows of the data frame
head(data)
#Step2
#fit the simple linear regression model
dput(names(data))
q.lm <- lm(log(Stopped) ~ Year, data)
summary(q.lm)
#Step3
#fit the piecewise regression model to original model,
#estimating a breakpoint at x=14
install.packages('segmented')
library(segmented)
o <- segmented(q.lm, seg.Z = ~Year, psi = 2018)
# view the summary
summary(o)
#Step4
# visulize the piecewise regression model
plot(o)
points(log(Stopped) ~ Year, data)
Der obige Code erstellt ein stückweises Regressionsmodell für die Personen, die das Studium in verschiedenen Jahren abgebrochen haben. Der Code hat einige Ausgaben, die im Folgenden beschrieben werden:
Die Ausgabe für Schritt 1:
Year Stopped
1 2015 973
2 2016 1025
3 2017 1151
4 2018 1384
5 2019 4507
6 2020 15557
Es zeigt den Kopf der Daten.
Die Ausgabe für Schritt 2:
Call:
lm(formula = log(Stopped) ~ Year, data = data)
Residuals:
1 2 3 4 5 6
0.50759 0.03146 -0.38079 -0.72463 -0.07216 0.63853
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -1057.9257 279.3081 -3.788 0.0193 *
Year 0.5282 0.1384 3.815 0.0189 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.5791 on 4 degrees of freedom
Multiple R-squared: 0.7844, Adjusted R-squared: 0.7305
F-statistic: 14.56 on 1 and 4 DF, p-value: 0.01886
Dies zeigt die Zusammenfassung für das lineare Regressionsmodell.
Die Ausgabe für Schritt 3:
***Regression Model with Segmented Relationship(s)***
Call:
segmented.lm(obj = q.lm, seg.Z = ~Year, psi = 2018)
Estimated Break-Point(s):
Est. St.Err
psi1.Year 2017.91 0.039
Meaningful coefficients of the linear terms:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -162.39260 35.56716 -4.566 0.0448 *
Year 0.08400 0.01764 4.761 0.0414 *
U1.Year 1.12577 0.02495 45.121 NA
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.02495 on 2 degrees of freedom
Multiple R-Squared: 0.9998, Adjusted R-squared: 0.9995
Boot restarting based on 6 samples. Last fit:
Convergence attained in 1 iterations (rel. change 3.7909e-16)
Dies passt zum stückweisen Regressionsmodell und zeigt die Zusammenfassung für das Modell. Das Modell erkennt einen Breakpoint im Jahr 2017.91.
Die Ausgabe für Schritt 4:

Es visualisiert das stückweise Regressionsmodell. Das Diagramm zeigt, dass das stückweise Regressionsmodell recht gut zu den gegebenen Daten passt.