Trenderkennung

Modelle zur Korrelations- und Regressionsanalyse

Moderator: EDi

bigben
Beiträge: 658
Registriert: Mi Okt 12, 2016 9:09 am

Re: Trenderkennung

Beitrag von bigben » Mo Sep 25, 2017 8:52 pm

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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte

Benutzeravatar
EDi
Beiträge: 622
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Trenderkennung

Beitrag von EDi » Mo Sep 25, 2017 11:08 pm

Ok bezüglich Normalverteilung wollte ich nur auf den Kommentar von EDi reagieren ;)
Und ich hab nur auf den Kommentar von Consuli reagiert ;)
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
Bild.

wkowalski
Beiträge: 29
Registriert: Mo Sep 04, 2017 9:42 pm

Re: Trenderkennung

Beitrag von wkowalski » Do Sep 28, 2017 4:42 pm

Hey!

Habe jetzt meine Daten mal mit der robusten linearen Regression (rlm() aus dem Package MASS) behandelt und folgende Ergebnisse erzielt:

hkl1_linrob.png
hkl1_linrob.png (6.43 KiB) 845 mal betrachtet
hklm50_linrob.png
hklm50_linrob.png (6.79 KiB) 845 mal betrachtet
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"))

LG

Benutzeravatar
EDi
Beiträge: 622
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Trenderkennung

Beitrag von EDi » Do Sep 28, 2017 8:35 pm

Dann könnte man sich ja beim fitten auf die Werte konzentrieren die zu 95 % im Intervall liegen?
Hmm, ich glaube du verwechselst hier konfidenzinterval mit Predictioninterval?

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
Bild.

wkowalski
Beiträge: 29
Registriert: Mo Sep 04, 2017 9:42 pm

Re: Trenderkennung

Beitrag von wkowalski » 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. :?

bigben
Beiträge: 658
Registriert: Mi Okt 12, 2016 9:09 am

Re: Trenderkennung

Beitrag von bigben » Do Sep 28, 2017 11:13 pm

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

bigben
Beiträge: 658
Registriert: Mi Okt 12, 2016 9:09 am

Re: Trenderkennung

Beitrag von bigben » Do Sep 28, 2017 11:17 pm

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. :?
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.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte

wkowalski
Beiträge: 29
Registriert: Mo Sep 04, 2017 9:42 pm

Re: Trenderkennung

Beitrag von wkowalski » Mo Okt 02, 2017 4:32 pm

bigben hat geschrieben:
Do Sep 28, 2017 11:13 pm
Aber wenn Du das automatisch auf ganz viele Datensätze anwendest, ist es doch beruhigend, für einflussreiche Ausreißer vorgesorgt zu haben. Nicht?
Ja, das finde ich auch! :)
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.
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.

consuli
Beiträge: 342
Registriert: Mo Okt 10, 2016 8:18 pm

Re: Trenderkennung

Beitrag von consuli » Mi Okt 04, 2017 9:15 pm

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
Thanks to Steven for bringing up the best explanation for the existence and the origin of the universe, though. Especially for been a lighthouse of will-power still shining on, not only for disabled people, but any (beautiful minded) person.

wkowalski
Beiträge: 29
Registriert: Mo Sep 04, 2017 9:42 pm

Re: Trenderkennung

Beitrag von wkowalski » Di Okt 10, 2017 2:09 pm

consuli hat geschrieben:
Mi Okt 04, 2017 9:15 pm
Da Du eine Trendanalyse machst, müsstest Du eigentlich dreidimensional xy-plotten (Krankheitsrate über Prediktor und Zeit).
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

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast