Trenderkennung
Moderator: EDi
Re: Trenderkennung
Das Paket "MASS" bietet eine Funktion rlm(), die ähnlich funktioniert wie lm(). Aber natürlich hast Du in R die Qual der Wahl: https://cran.r-project.org/web/views/Robust.html
LG,
Bernhard
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: Trenderkennung
Und ich hab nur auf den Kommentar von Consuli reagiertOk bezüglich Normalverteilung wollte ich nur auf den Kommentar von EDi reagieren
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Re: Trenderkennung
Hey!
Habe jetzt meine Daten mal mit der robusten linearen Regression (rlm() aus dem Package MASS) behandelt und folgende Ergebnisse erzielt:
Wie man sieht ändert die robuste Regression die gefittete Gerade nur minimal. Gibt es eine Möglichkeit ein Konfidenzintervall o.ä. festzulegen? Dann könnte man sich ja beim fitten auf die Werte konzentrieren die zu 95 % im Intervall liegen?
Vielleicht habe ich aber bei der Anwendung aber auch etwas falsch gemacht?!
Anbei auch noch mein Code:
LG
Habe jetzt meine Daten mal mit der robusten linearen Regression (rlm() aus dem Package MASS) behandelt und folgende Ergebnisse erzielt:
Wie man sieht ändert die robuste Regression die gefittete Gerade nur minimal. Gibt es eine Möglichkeit ein Konfidenzintervall o.ä. festzulegen? Dann könnte man sich ja beim fitten auf die Werte konzentrieren die zu 95 % im Intervall liegen?
Vielleicht habe ich aber bei der Anwendung aber auch etwas falsch gemacht?!
Anbei auch noch mein Code:
Code: Alles auswählen
hkl_m <- read.csv("morb_kh_kreislauf_m.csv",header = TRUE,sep=";",dec=",")
years <- hkl_m$Jahr
rate1y <- hkl_m$X1.Jahr
lin1 <- lm(rate1y ~ years)
rob1 <- rlm(rate1y ~ years)
plot(years,rate1y,xlim=c(1988,2015),ylim=c(0,0.002), xlab="Jahre",ylab="Erkrankungsraten")
title("Herz-Kreislauf Erkrankung: Männer 1 Jahr")
abline(lin1, lty="dashed")
abline(rob1, col="red")
legend(2009,0.0004, legend = c("lin Model","robust Model"), lty=c(2,1), col=c("black","red"))
rate50y <- hkl_m$X50.Jahr
lin50 <- lm(rate50y ~ years)
rob50 <- rlm(rate50y ~ years)
plot(years,rate50y,xlim=c(1988,2015),ylim=c(0.03,0.05), xlab="Jahre",ylab="Erkrankungsraten")
title("Herz-Kreislauf Erkrankung: Männer 50 Jahre")
abline(lin50, lty="dashed")
abline(rob50, col="red")
legend(2009,0.049, legend = c("lin Model","robust Model"), lty=c(2,1), col=c("black","red"))
Re: Trenderkennung
Hmm, ich glaube du verwechselst hier konfidenzinterval mit Predictioninterval?Dann könnte man sich ja beim fitten auf die Werte konzentrieren die zu 95 % im Intervall liegen?
Auch glaube Ich, dass ein linearer Trend hier kein gutes Model liefert...
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Re: Trenderkennung
Was würdest du empfehlen? Ist ein bisschen blöd, dass ich soviele Datensätze habe. Prinzipiell wäre es ja wünschenswert, je nach Trend jenes Modell zu verwenden, dass sich durch die geringste Abweichung auszeichnet. Hab aber leider überhaupt keine Ahnung wie ich das angehen soll.
Re: Trenderkennung
Dass die Geraden sich je nur geringfügig unterscheiden, finde ich erstmal gut. Aber wenn Du das automatisch auf ganz viele Datensätze anwendest, ist es doch beruhigend, für einflussreiche Ausreißer vorgesorgt zu haben. Nicht?
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: Trenderkennung
Wenn Du keine Angst vor Overfitting hast: wir behandeln in einem anderen Thread doch gerade schrittweise Regression. Mach halt eine lineare Regression mit quadratischem, kubischen, logarithmischem usw. Term und lass step () die jeweils optimal passende heraussuchen.wkowalski hat geschrieben: ↑Do Sep 28, 2017 9:28 pm Was würdest du empfehlen? Ist ein bisschen blöd, dass ich soviele Datensätze habe. Prinzipiell wäre es ja wünschenswert, je nach Trend jenes Modell zu verwenden, dass sich durch die geringste Abweichung auszeichnet. Hab aber leider überhaupt keine Ahnung wie ich das angehen soll.
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: Trenderkennung
Ja, das finde ich auch!
O.k das muss ich mir noch genauer ansehen. Overfitting sollte wenn möglich vermieden werden, sonst hat mein Modell ja überhaupt keine Aussagekraft mehr.bigben hat geschrieben: ↑Do Sep 28, 2017 11:17 pm
Wenn Du keine Angst vor Overfitting hast: wir behandeln in einem anderen Thread doch gerade schrittweise Regression. Mach halt eine lineare Regression mit quadratischem, kubischen, logarithmischem usw. Term und lass step () die jeweils optimal passende heraussuchen.
Re: Trenderkennung
Bei den geplotteten 50-jährigen Männern ist der Trend fallend, während er bei einjährigen Männern (mannlichen Säuglingen?) ansteigt. Deshalb würde ich Dir zu einem Mixed-Effect Model raten.
Abweichungen von der Normalverteilung sind keine Kontraindikationen für einen kleinste Quadrate Schätzer (Gauss-Markov Theorem), nur erhebliche Varianzinhomogenität wäre eine echte Kontraindikation. Deshalb sind x-y Plots immer sehr wichtig. Da Du eine Trendanalyse machst, müsstest Du eigentlich dreidimensional xy-plotten (Krankheitsrate über Prediktor und Zeit).
Aussreicher hingegen können schon gravierend sein. Jedoch sind nur die Ausreisser wirklich einflussreich, die neben ihrem Ausreißen (gemessen in Zielvariable - hier Krankheitsrate) gleichzeitig im Extrembereich eines Prediktors liegen (nahe Minimum oder Maximum).
Consuli
Abweichungen von der Normalverteilung sind keine Kontraindikationen für einen kleinste Quadrate Schätzer (Gauss-Markov Theorem), nur erhebliche Varianzinhomogenität wäre eine echte Kontraindikation. Deshalb sind x-y Plots immer sehr wichtig. Da Du eine Trendanalyse machst, müsstest Du eigentlich dreidimensional xy-plotten (Krankheitsrate über Prediktor und Zeit).
Aussreicher hingegen können schon gravierend sein. Jedoch sind nur die Ausreisser wirklich einflussreich, die neben ihrem Ausreißen (gemessen in Zielvariable - hier Krankheitsrate) gleichzeitig im Extrembereich eines Prediktors liegen (nahe Minimum oder Maximum).
Consuli
Irmgard.
Re: Trenderkennung
Nun gut, ich hab aber leider nur die Anzahl der Fälle die in bestimmten Jahren aufgetreten sind und keinen weiteren Parameter der mir als Prediktor dienen könnte... irgendeine Idee was ich da noch mit reinnehmen könnte?
LG