Gauss-Verteilung auf Messwerte

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
flacedoo
Beiträge: 3
Registriert: Mo Apr 13, 2020 2:16 pm

Gauss-Verteilung auf Messwerte

Beitrag von flacedoo »

Hallo zusammen,

Bitte entschuldigt wenn ich das Thema im falschen Bereich eröffne, gebt mir gerne Bescheid wo es eigentlich hängen sollte.

Folgende Situation: Ich habe Messwerte aus den letzten 3 Wochen. Es wird für diese Reihe eine Gauss Normalverteilung vermutet. Die Messreihe ist jedoch noch nicht abgeschlossen, der Höhepunkt wird erst in der Zukunft erwartet.

Ich möchte jetzt um die Gauss-Verteilung zu ermitteln die bisher gemessenen Werte als Anfang dieser Verteilung nutzen und mittels Chi-Quadrat-Fit die beste Approximation der Gauss-Parameter errechnen. Für die Chi-Quadrat Verteilung, Abhängig von Variable E (Zeitpunkt d. Höhepunktes), ergibt sich folgende Formel:
X²(E) = Bild
mit den Messwerten m(ti) , 0.05 als Fehler und d(E,ti) = 2.6 / 1- (t / E)

Könnt ihr mir weiterhelfen wie ich diese Approximation in R umsetze? Meine Statistik Kenntnisse sind leider schon etwas eingerostet, und auch in R bin ich erst kürzlich eingestiegen. Vielen Dank im voraus!
Dateianhänge
2020-04-13_14h22_21.png
2020-04-13_14h22_21.png (5 KiB) 385 mal betrachtet
bigben
Beiträge: 2778
Registriert: Mi Okt 12, 2016 9:09 am

Re: Gauss-Verteilung auf Messwerte

Beitrag von bigben »

Hallo flacedoo,

willkommen im Forum und keine Sorge, so richtig engstirnig in Sachen Forumswahl sind wir hier gar nicht. Wahrscheinlich verstehe ich den Hintergrund Deiner Frage unzureichend. Wäre es nicht viel einfacher, direkt den Mittelwert und die Standardabweichung aus den bisherigen Werten zu berechnen?

LG Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
flacedoo
Beiträge: 3
Registriert: Mo Apr 13, 2020 2:16 pm

Re: Gauss-Verteilung auf Messwerte

Beitrag von flacedoo »

Hey Bernhard,

Ich glaube eher ich habe es etwas ungünstig formuliert :)

Ich nehme an dass der (zeitliche) Verlauf dieser Messreihen die Form einer Gauß-Verteilung hat - sprich der maximale Wert zum „Zeitpunkt in der Mitte“ stattfindet. Nicht dass die Messwerte an sich einfach nur Gauß-Verteilt sind. Aka der „Mittelwert“ wird einen deutlich größeren Wert haben als alles was ich bisher gemessen habe. Damit habe ich in meiner (geordneten) bisherigen Messreihen quasi das erste Drittel der „Gauß-Parabel“. Bitte steinigt mich für meine schlechte Beschreibungen, ich habe es verdient :lol:
bigben
Beiträge: 2778
Registriert: Mi Okt 12, 2016 9:09 am

Re: Gauss-Verteilung auf Messwerte

Beitrag von bigben »

Hi!
flacedoo hat geschrieben: Mo Apr 13, 2020 4:52 pm Bitte steinigt mich für meine schlechte Beschreibungen, ich habe es verdient :lol:
Den Witz habe ich nicht verstanden. Es geht nicht darum, jemanden zu steinigen, aber schon irgendwie darum, dass die Gefragten die Frage verstehen.

Jetzt hast Du uns noch nicht erklärt, ob das eine Hausaufgabe ist oder ein Problem in der wirklichen Welt. In der wirklichen Welt könnte man versuchen, einen bereits in R implementierten Optimizer mit dem Problem zu beschäftigen, mit welchen Parametern die Residuen besonders klein werden. Bei einer Hausaufgabe kann es wichtig sein, Vorgaben hinsichtlich des Lösungswegs zu berücksichtigen.

Gruß,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
flacedoo
Beiträge: 3
Registriert: Mo Apr 13, 2020 2:16 pm

Re: Gauss-Verteilung auf Messwerte

Beitrag von flacedoo »

Hi Bernhard,

Es ist keine Hausaufgabe, sondern ein reales Problem. Aus der Zeit der Hausaufgaben bin ich Gott sei dank schon länger raus :)

Ich habe naiver weise Gedacht ich könnte die Arbeit erleichtern, wenn ich nicht alle Informationen hier blind rein schreibe - da wir aber gefühlt aneinander vorbei reden hier einfach mal alles:

Ich habe dieses Paper entdeckt. Darin wird der aktuelle (und zukünftige) Verlauf von COVID19 beschrieben. Ich wollte nun die Berechnungen mit aktuelleren (jetzt 29 statt 14) Werten nochmals durchführen, um zu sehen ob a) das Modell passende aussagen trifft und b) zu prüfen ob das Modell auch auf andere Werte angewendet werden kann. Dementsprechend würde ich mich gerne (erstmal) an das generelle Vorgehen halten einen Gauss-Verlauf anzunehmen, und diesen mittels Chi-Quadrat-Fit zu extrapolieren (siehe Kapitel B: Statistical Fit).
Die Daten der letzten Zeit habe ich alle Parat, nur komme ich an dem Schritt nicht weiter aus den Daten sowie den für mich auch verständlichen Formeln auf dem Paper jetzt die Berechnungen konkret durchzuführen.

Helfen dir diese Infos mir zu helfen? Und hättest du eine Idee?

Vielen Dank schon jetzt für deine bisherige Hilfe!
schubbiaschwilli
Beiträge: 253
Registriert: Di Jun 27, 2017 12:09 pm

Re: Gauss-Verteilung auf Messwerte

Beitrag von schubbiaschwilli »

Gude!

Ich glaube, wir haben das gleiche (mathematische) Problem - Ich hatte hier viewtopic.php?f=18&t=2182 schon mal einen Thread gestartet, bin aber dann bei meinen selbst gefrickelten Lösungen verblieben.

Eine Lösung für die Chi-Quadrat- und Normalverteilung sollte ungefähr so aussehen:

Code: Alles auswählen

y <- c(0.001671731, 0.010019197, 0.021555243, 0.045572347, 0.081215608, 0.125574363, 0.185860026, 0.255410306, 0.318870946, 0.379048132, 0.433840761, 0.468856072, 0.485872356, 0.483884038, 0.467815987, 0.442649799, 0.419693428, 0.383803595, 0.340062932, 0.304156204, 0.266438526, 0.238129934, 0.210624259, 0.184689539, 0.158586653, 0.135166956, 0.106095680, 0.097577364, 0.081843982, 0.062244477, 0.049081801)
x <- seq(50, 200, 5)

obs <- data.frame(x,y)
colnames(obs)

ChiSqr <- function(x, par){
   return(par[2]*dchisq(par[1]*x, df=par[3], ncp=0, log=FALSE))
}

LossChiSqr <- function(obs, par)
{return(sum((obs$y - ChiSqr(obs$x, par))^2))}

NormFunc <- function(x, par){
   return(par[2]*dnorm(par[1]*x, mean=par[3], sd=par[4], log=FALSE))
}

LossNorm <- function(obs, par)
{return(sum((obs$y - NormFunc(obs$x, par))^2))}

FitNorm <- optim(par=c(1,1,125,10), fn=LossNorm, obs=obs)
FitChiSqr <- optim(par=c(0.248,9,30), fn=LossChiSqr, obs=obs)

plot(x=obs$x, y=obs$y, xlab="t", ylab="Timeseries", main="")
points(x=obs$x, y=ChiSqr(obs$x, FitChiSqr$par), lwd=1, type="l", col="blue")
points(x=obs$x, y=NormFunc(obs$x, FitNorm$par), lwd=1, type="l", col="red")
59fe977c-b914-46d5-978f-74644ff5273c.png
59fe977c-b914-46d5-978f-74644ff5273c.png (4.05 KiB) 355 mal betrachtet
Du musst aber aufpassen mit dem Optim bzw den Startwerten - Die sind sehr sensibel, es kann also sein, du musst mit verschiedenen Startwerten rumspielen, bis es passt. Und hoffentlich sind nicht meine Professoren für Statistik hier unterwegs - ich bin mir sicher, das geht auch analytisch - die erkennen mir noch nachträglich meine Scheine ab.

Dank&Gruß
schubbiaschwilli
Antworten