Mittelwert von y für definierte Spannweite(n) von x

Alles zum Thema der beschreibenden Statistik

Moderator: jogo

Antworten
flip_0207
Beiträge: 23
Registriert: Do Dez 06, 2018 7:46 pm

Mittelwert von y für definierte Spannweite(n) von x

Beitrag von flip_0207 »

Hallo zusammen

Aktuell arbeite ich mit einem sehr speziellen Datensatz, der mehrere Messungdurchgänge mit Messwerten (y) und dazugehörigen Positionen (x) beinhaltet. Da sich die Anzahl und Ausprägung der Position (x) zwischen den Messungdurchgängen unterscheidet, muss ich die Daten nun irgendwie sinnvoll zusammenfassen. Meine Idee ist es nun, den Mittelwert der Messwerte für einen definierten Bereich der Position zu berechnen. Konkret möchte ich den Mittelwert der Messwerte für die Position im Bereich von 0 bis 1, von 1 bis 2, von 2 bis 3 und so weiter berechnen.

Die Funktion group_by bzw. summarize hat mir da nicht bei geholfen, aber vielleicht kennt ja jemand eine einfache Lösung für mein Problem.

Einen Beispieldatensatz habe ich mal in den Anhang gepackt.

Viele Grüße

Phillip
Beispiel_Durchschnitt.csv
(285 Bytes) 104-mal heruntergeladen
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Mittelwert von y für definierte Spannweite(n) von x

Beitrag von bigben »

Hallo flip,
flip_0207 hat geschrieben: Fr Jan 08, 2021 1:15 pmAktuell arbeite ich mit einem sehr speziellen Datensatz, der mehrere Messungdurchgänge mit Messwerten (y) und dazugehörigen Positionen (x) beinhaltet.
Sehr gut, dass Du da gleich ein Beispiel angehängt hast!
Da sich die Anzahl und Ausprägung der Position (x) zwischen den Messungdurchgängen unterscheidet, muss ich die Daten nun irgendwie sinnvoll zusammenfassen.


Das ist erstmal recht vage. Wahrscheinlich können wir besser helfen wenn Du erklärst, worum es eigentlich geht, warum zwei Messdurchgänge gemacht wurden etc.
Meine Idee ist es nun, den Mittelwert der Messwerte für einen definierten Bereich der Position zu berechnen
Ist das fest vorgegeben oder kann man versuchen, Dich noch zu einer kontinuierlichen Interpolation zu überreden?
Konkret möchte ich den Mittelwert der Messwerte für die Position im Bereich von 0 bis 1, von 1 bis 2, von 2 bis 3 und so weiter berechnen.

Code: Alles auswählen

flip <- read.table(header = TRUE, dec = ",", text ="Position	Messwert	Messung
0,1	1,4	1
0,3	1,3	1
0,35	1,6	1
0,4	1,4	1
0,8	1,5	1
1,34	1,2	1
1,56	0,777	1
1,96	0,4	1
2,31	0,2	1
2,5	0,1	1
3,1	0,34	1
3,25	0,25	1
0,12	1,5	2
0,24	1,6	2
0,7	1,47	2
1,2	0,45	2
1,4	3,45	2
1,87	2,78	2
2,35	2,45	2
2,14	2,354	2
3,05	1,24	2
")

plot(flip$Position, flip$Messwert, col = flip$Messung)

flip$abschnitt <- cut(flip$Position, breaks = c(0,1,2,3,4))
abline(v = c(0,1,2,3,4), col = "grey", lty = 2)

aggregate(flip$Messwert, list(flip$abschnitt), mean)

aggregate(flip$Messwert, list(flip$abschnitt, flip$Messung), mean)

LG,
Bernhard


Nachtrag: Wenn Du das sehr empfehlenswerte Zusatzpaket ggplot2 installierst -- so könnte eine kontinuierliche "Mittelwertbildung" aussehen:

Code: Alles auswählen

library(ggplot2)
flip$Wiederholung <- factor(flip$Messung, labels = c("erste Messung", "zweite Messung"))
ggplot(flip, aes(x=Position, y = Messwert, color = Wiederholung)) +
  geom_point() + geom_smooth(se = FALSE)
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
flip_0207
Beiträge: 23
Registriert: Do Dez 06, 2018 7:46 pm

Re: Mittelwert von y für definierte Spannweite(n) von x

Beitrag von flip_0207 »

Hallo Bernhard

Danke für die ausführliche Antwort! Ich versuche mal die Fragen zu beantworten:

In meinem Beispiel sind es nur 2 Messdurchgänge. Der tatsächliche Datensatz umfasst jedoch mehr Messdurchgänge, da bei jedem Messdurchgang Versuchsparameter verändert worden sind. Das ist auch der Grund, warum ich die Messdurchgänge getrennt darstellen und auswerten muss.

Eine kontinuierliche Interpolation ist leider mMn nicht möglich. Wir haben Kräfte an einem sich drehenden Bauteil gemessen und die Position entspricht einem Grad innerhalb einer Umdrehung, wobei eine vollständige Umdrehung dann logischerweise 360 Grad sind. Da ich die gemessenen Kräfte nun in 1 Grad Schritten darstellen möchte, damit ich für jede Position die Kräfte berechnen kann, muss ich die Messwerte entsprechend in 1 Grad Schritten zusammenfassen. Das Problem dabei ist, dass die Geschwindigkeit der Rotation nicht konstant war und ich somit bei jeder Messung innerhalb der 360 Grad eine unterschiedliche Anzahl an Messwerten habe, die ich so nicht sauber darstellen und weiterverarbeiten kann. Daher bin ich gezwungen, immer für jeweils 1 Grad einen Durchschnittswert zu bilden.

Diese Zeile Code würde mir ja prinzipiell weiterhelfen:

Code: Alles auswählen

flip$abschnitt <- cut(flip$Position, breaks = c(0,1,2,3,4))
Ich müsste eben den Vektor in breaks auf meine 360 Grad erweitern, was ja kein Problem darstellt. Wenn ich damit jetzt als Output in der neuen Spalte nicht

Code: Alles auswählen

(0,1]
sondern hätte, wäre mein Problem gelöst ;)

Danke auch für den Tipp mit geom_smooth! Ich nutze ggplot sehr häufig, aber die Funktion kannte ich bisher noch nicht. Das hilft mir tatsächlich bei einem anderen Problem weiter!
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Mittelwert von y für definierte Spannweite(n) von x

Beitrag von jogo »

Hallo flip,

für die Steuerung der Ausgabe von cut() gibt es das Argument labels=,
bitte schau in den Hilfetext der Funktion!

Gruß, Jörg
flip_0207
Beiträge: 23
Registriert: Do Dez 06, 2018 7:46 pm

Re: Mittelwert von y für definierte Spannweite(n) von x

Beitrag von flip_0207 »

jogo hat geschrieben: Mo Jan 11, 2021 9:53 am Hallo flip,

für die Steuerung der Ausgabe von cut() gibt es das Argument labels=,
bitte schau in den Hilfetext der Funktion!

Gruß, Jörg
Danke, damit hat es funktioniert!
Antworten