Jed und ich sind hier. Wir sprechen heute über Mountainbike-Federung und über einige der praktischen Tools in JMP, die uns geholfen haben, den Zusammenhang zwischen Federung und Online-Testberichten besser zu verstehen. Die Idee zu diesem Vortrag entstand letztes Jahr auf dem Discovery Summit. Jed und ich trafen uns, und ich wollte unbedingt wissen: „Was ist Functional Data Explorer? Wie kann ich ihn nutzen? Und welche Vorteile bietet er mir?“ Jed, der mich ein bisschen kannte, fing sofort an, über Mountainbikes zu reden. Das hat mich sofort begeistert. Und so entstand schließlich diese Präsentation.
Ein kurzer Hinweis vorab: Wir stehen in keiner Verbindung zu Fahrradherstellern und sind keinesfalls Branchenexperten. Wir haben einige Testberichte von Bike Radar herangezogen und deren Testmethoden analysiert. Anschließend haben wir die Kennlinien der Federung mithilfe der Software Linkage, die im Internet verfügbar ist, ausgewertet.
Diese Präsentation soll Ihnen keine Kaufentscheidung für Ihr nächstes Fahrrad erleichtern. Das ist nicht unsere Absicht. Wir möchten Ihnen vielmehr einige der wirklich nützlichen und leistungsstarken Tools von JMP vorstellen, mit denen Sie Daten besser verstehen können, die auf herkömmliche Weise schwer zu erfassen sind.
Bevor wir hier anfangen, müssen wir kurz über Mountainbikes und ihre Funktionsweise sprechen. Mountainbikes haben typischerweise eine Vorder- und eine Hinterradfederung. Die Vorderradfederung ist recht einfach. Sie bewegt sich linear entlang der Gabel auf und ab. Die Hinterradfederung ist deutlich komplexer. Das Hinterrad bewegt sich auf und ab und ist üblicherweise über eine Art Umlenkhebel mit einem Dämpfer verbunden, der sich in der Mitte des Rahmens befindet. Dieser Umlenkhebel kann verschiedene Eigenschaften aufweisen, auf die wir im Folgenden eingehen werden.
Am einfachsten zu verstehen ist wohl das Übersetzungsverhältnis. Wenn sich das Rad einen Millimeter bewegt, wie stark wird der Dämpfer komprimiert? Komprimiert der Dämpfer ebenfalls einen Millimeter? Das wäre ein Übersetzungsverhältnis von eins. Komprimiert der Dämpfer deutlich weniger, ist das Übersetzungsverhältnis höher, und dieser Wert ändert sich über den gesamten Federweg des Rades. Mit der Radbewegung ändert sich dieser Wert, und so erhält man eine Kennlinie bzw. Funktionsdaten, die die Anlenkung des Fahrrads beschreiben.
Wir haben fünf dieser Kurven herausgesucht. Die erste ist die Anti-Squat-Kurve. Sie beschreibt, wie sich das Fahrrad beim Beschleunigen verhält. Führt das Treten in die Pedale dazu, dass das Fahrrad nach vorne kippt, tiefer einfedert oder relativ waagerecht bleibt? Die Anti-Squat-Kurve beschreibt, wie die Federung auf diese Beschleunigungskraft reagiert.
Die Anti-Rise-Eigenschaft ist eine weitere dieser Eigenschaften, die beschreibt, ob das Fahrrad beim Bremsen, also beim Abbremsen, nach vorne kippt oder ob die Federung komprimiert wird. Die Anti-Rise-Eigenschaft wird von Fahrraddesignern optimiert, um das Fahrverhalten zu charakterisieren oder zu verbessern.
Wir haben bereits kurz über das Übersetzungsverhältnis gesprochen. Es beschreibt, wie stark sich der Dämpfer bei einer Radbewegung komprimiert. Besonders interessant am Übersetzungsverhältnis – und darauf gehen wir gegen Ende der Präsentation noch genauer ein – ist, dass es auf den jeweiligen Dämpfer abgestimmt ist. Bei Fahrrädern gibt es Luft- und Stahlfederung, und je nachdem, welche Federung man verwendet, ergeben sich unterschiedliche Übersetzungsverhältniskurven. Wichtig ist, dass das Übersetzungsverhältnis zwar abgestimmt ist, aber nicht isoliert betrachtet wird, sondern stark vom verwendeten Dämpfertyp abhängt.
Die Achsbewegung ist ein weiterer wichtiger Punkt. Bewegt sich das Rad beim Hochfahren weit nach hinten, eher senkrecht nach oben und unten oder leicht nach vorn? In dieser Grafik zeigt die Y-Achse die zurückgelegte Strecke des Rades und die X-Achse seine Position von vorne nach hinten. Das Rad startet bei Null. Im blauen Diagramm sieht man, dass es sich zunächst leicht nach hinten bewegt, bevor es sich vorwärts bewegt. Stellen Sie sich vor, Sie fahren einen Trail hinunter: Wenn Sie vorwärts fahren, möchten Sie, dass sich Ihr Rad nach hinten bewegt, um einem Hindernis auszuweichen, anstatt nach vorn und hineinzufahren. Die Achsbewegung ist ein Aspekt, der sich recht intuitiv verstehen lässt und dessen Vorteile für ein Fahrrad verdeutlicht.
Dann gibt es noch den Pedalrückschlag. Dieser tritt auf, wenn sich das Rad dreht und sich der Abstand zwischen Pedalen und Rad manchmal etwas vergrößert, wodurch die Pedale nach hinten gegen den Fahrer drücken. Das ist im Allgemeinen nicht gut und kann ein unsicheres Fahrgefühl verursachen.
Das sind die Kurven, die uns interessieren. Das ist der Bereich, der uns interessiert, und all das können wir durch Verknüpfungen erhalten. Die Frage ist nun: Wie erhalten wir Bewertungen? Ich befinde mich hier noch in der Zeit vor JMP 18, aber ich kann ein Python-Skript schreiben, dessen Funktionsweise ich hier nicht im Detail erläutern werde. Bei Fragen können Sie sich gerne an mich wenden. Ich beantworte sie gerne. Kurz gesagt: Ich habe ein Python-Skript auf meinem Desktop, das von JMP ausgeführt wird. Dieses Skript greift auf Bike Radar zu, sammelt eine Reihe von Bewertungen und generiert anschließend einige JMP-Datentabellen, die wir uns ansehen können.
Die erste Tabelle ist diese Übersichtstabelle. Sie enthält zahlreiche Metadaten zum Fahrradtest. Darin finden wir Informationen zum Fahrradmodell, ob es sich um einen ausführlichen Test, einen Langzeittest oder einen ersten Fahrbericht handelt, sowie das Veröffentlichungsdatum. Außerdem werden erste Kommentare, die Gesamtbewertung, die URL, das Fahrradmodell und der Autor angegeben. Anschließend folgt der Hauptteil des Tests. Hier werden erneut das Fahrrad, der jeweilige Abschnitt und der vollständige Testtext aufgeführt.
Jeder der hier gesammelten Testberichte besteht aus drei Teilen: dem Abschnitt zum Bergauffahren, dem Abschnitt zur Abfahrt und dem abschließenden Fazit. Für jedes Fahrrad haben wir diese Abschnitte analysiert, um festzustellen, ob das Fahrrad gut bergauf fährt, ob es gut bergauf und bergab fährt und wie der Tester das Fahrrad insgesamt empfunden hat.
Wir haben über die beiden Komponenten gesprochen, die wir für unsere Analyse verwenden werden. Wir haben die Kurven, die wir mit dieser Verknüpfungssoftware generieren können, und wir haben die Bewertungen.
Aber wie bringen wir all das nun in eine Form, die JMP versteht und mit der wir tatsächlich Analysen durchführen können? Durch die Verknüpfung haben wir ein Bild erhalten. Die Frage ist nun: Wie bringen wir dieses Bild in ein Format, das JMP verarbeiten kann?
Das Tolle an JMP – und das habe ich erst vor Kurzem entdeckt – ist, dass man damit Bilder öffnen kann. Dazu muss man zwar etwas JSL ausführen, aber dann erhält man ein Bild und anschließend eine Tabelle mit den X- und Y-Koordinaten. Diese geben an, wo sich das Pixel im Bild befindet, und liefern dann die Rot-, Grün- und Blauwerte jedes einzelnen Pixels.
Das ist gut. Damit sind wir aber noch nicht ganz am Ziel. Wir brauchen diese Kurve, aber wir können ihr deutlich näher kommen. Wenn wir alle blauen Werte auswählen könnten, könnten wir... Okay, wir können alle blauen Werte ermitteln und diese dann in diesem Diagrammraum abbilden, um eine Kurve zu erzeugen.
Ich mag den Workflow Builder wirklich sehr. Er erleichtert mir die Arbeit ungemein, da ich alles grafisch umsetzen und direkt Ergebnisse erhalten kann. So habe ich einen schnellen Workflow für K-Means-Clustering erstellt. Dieses Bild eignet sich gut, da es nur drei Farben enthält. Wenn wir drei Gruppen generieren und die Formeln für diese Cluster in der Tabelle speichern, erhalten wir ein Diagramm mit den X- und Y-Positionen aus dieser Tabelle. Diese können wir dann anhand der Clusterformel einfärben. Clusterformel 1 umfasst alle blauen Pixel. Damit können wir beginnen: „Okay, hier sind die blauen Pixel. Wo befinden sie sich? Wir kennen ihre Position im Bild. Diese müssen wir nun in diesem Diagramm ihren Positionen zuordnen.“
Ich werde jetzt nicht näher darauf eingehen, da das etwas zu komplex ist, aber ich zeige Ihnen, wie das endgültige Drehbuch aussieht, das wir erstellt haben.
Es wird das Bild angezeigt, und dann heißt es: „Okay, Sie müssen mir Xmin, Xmax, Ymin und Ymax für dieses Diagramm angeben.“ Ich gebe ein, dass der Bereich von null bis 130 und dann von 0,45 bis 1,35 reicht. Ich klicke auf „OK“. Das Ergebnis sieht dann so aus … Wir müssen alles hierher ziehen. Wir erhalten eine Datentabelle mit unseren X- und Y-Werten sowie den Eigenschaften und den betrachteten Fahrrädern. Dies ist nur ein Beispielbild. Aber Sie sehen, hier ist das ursprüngliche Diagramm. Hier ist unser extrahiertes Diagramm. Wir haben das erstellt, indem wir diese Werte eingegeben, die blauen Pixel betrachtet und dann berechnet haben: „Okay, ausgehend von unserer globalen Position, so wird diese in den von uns definierten Bereich von null bis 130 Millimetern abgebildet.“
Natürlich ist das kein perfektes Verfahren, aber es zeigt recht gut die Kurven für jeden einzelnen Wert an. Es dauert eine Weile. Jed und ich haben eines Abends jeweils ein paar Stunden damit verbracht, Zahlen einzugeben, aber schließlich hatten wir alle Kurven, die wir uns ansehen konnten.
Nun werden wir darüber sprechen: „Okay, was haben wir mit dem Text gemacht? Wie haben wir den Text in eine Form gebracht, die wir verwenden konnten?“
Danke, Landon. Wie Landon schon sagte, haben wir den Text und die Dateien als drei separate CSV-Dateien gespeichert: eine für den Aufstieg, eine für das Fazit und eine für den Abstieg. Diese habe ich auf dem Desktop gespeichert. Falls du es noch nicht wusstest: Es gibt eine sehr praktische Funktion namens „Mehrere Dateien importieren“. Die haben wir genutzt. Um aber Zeit zu sparen, führe ich einfach das Skript aus. Dadurch werden alle drei Dateien in eine einzige JMP-Datei importiert. Mit ein paar Klicks kann ich den Dateinamen dann in „Fazit“, „Abstieg“ und „Aufstieg“ ändern.
Meine Daten sind jetzt formatiert und einsatzbereit. Was meine ich mit einsatzbereit? Wir müssen den Text in jedem Feld in Zahlen umwandeln, damit wir die Daten bearbeiten und Statistiken erstellen können. Eine meiner Lieblingsfunktionen von JMP, die ich eher selten nutze, ist der Text-Explorer. Er ist wirklich kinderleicht. Wenn eine Spalte Text enthält, dann ist es eben Text. Alles andere können wir ignorieren, da wir nichts anderes benötigen. Das ist eine recht einfache Aufgabe.
Übrigens möchte ich erwähnen, dass die Stimmungsanalyse eine Funktion von JMP Pro ist. Falls Sie JMP Pro besitzen, können Sie diese Funktion nutzen. Sie analysiert den gesamten Text und vergibt eine Bewertung der Stimmung bzw. der emotionalen Wirkung. Wir sehen sofort, dass die Rezensenten diese Fahrräder im Allgemeinen positiv bewerten.
Aber eines möchte ich noch anmerken: Es gibt da dieses Konzept der Textkuratierung. Ich scrolle runter zu „Pedal Bob“, das klingt komisch. Es ist ja nicht so, als würde jemand Bob zum Treten auffordern. Beim Mountainbiken bezeichnet man mit „Pedal Bob“ das Auf- und Abwippen der Federung beim Treten, und das ist unerwünscht. Berücksichtigt JMP dieses seltsame Wort „Pedal Bob“? Standardmäßig nicht, aber es lässt sich ganz einfach hinzufügen. Ich werde das mit der Stimmungsanalyse machen. Ich werde diese Stimmungsbegriffe verwalten. Ich kann reingehen und, wenn ich tippen kann, „Pedal Bob“ eingeben. Ich kann ihm eine Bewertung von -50 geben und das hinzufügen. Dann sehe ich, wie sich die Bewertung nach dem Klicken auf „OK“ leicht ändert. Das ist zwar einfach, aber auch zeitaufwendig.
Ich habe eine Reihe von Begriffen. Das war tatsächlich Landon an einem Samstag. Er hat das Dokument durchgesehen, alle Begriffe für die Stimmungsanalyse ausgewählt und in einer Textdatei gespeichert. Das hat er einmal manuell gemacht. Dann kopiert JMP sie in die Zwischenablage, und ich kann sie mit Strg+V einfügen. Wenn ich hier auf „OK“ klicke, wird eine Anpassung vorgenommen. Dasselbe kann ich auch mit Negations- und Verstärkungsbegriffen in Textdateien machen. Aber anstatt euch beim Kopieren und Einfügen zuzusehen, nehme ich hier einfach eine kleine Abkürzung.
Nun sind alle Daten für diesen Korpus bzw. diese Dokumentensammlung lokalisiert. Die Sprache ist bereit, und wir können diesen Bewertungen vertrauen. Nachdem ich den Bewertungen vertraut habe, möchte ich sie weiterverarbeiten. Am einfachsten geht das, indem ich auf das rote Dreieck klicke und „Dokumentbewertungen speichern“ auswähle. Anschließend öffne ich die Tabelle, die zuvor nur unseren Text enthielt. Diese Tabelle enthält nun zusätzliche Spalten mit den Werten für positive und negative Stimmung sowie einer Gesamtstimmung.
Jetzt bin ich fast fertig. Ich muss jetzt eigentlich nur noch die Tabellierungsfunktion nutzen, um die Daten etwas besser aufzuschlüsseln, sodass ich für das Bergauffahren positive und negative Werte erhalte. Dasselbe gilt für das Gesamtergebnis (positiv und negativ) und das Bergabfahren. Wenn ich das in eine Datentabelle umwandle, kann ich die Daten jetzt weiterverarbeiten. Ich habe jedes Fahrrad und die Werte für Bergauffahren, Bergabfahren und das Gesamtergebnis. Das bedeutet, dass ich zum Beispiel den Diagramm-Generator verwenden kann, um das Gesamtergebnis für Bergabfahren mit dem für Bergauffahren zu vergleichen. Ich könnte sagen: „Hier sind die Fahrräder. Wenn ich ein Gesamtergebnis erzielen wollte, wären das die Fahrräder, die in beidem gut sind.“ Kurz gesagt: Ich kann jetzt mit den Daten arbeiten, und sie werden als Daten mit einem Wert für ihre Qualität behandelt. Damit zurück zu Landon.
Okay. Danke, Jed. Ich habe dieselbe Tabelle wie Jed. Darin sehen wir das Fahrrad und die Gesamtstimmung sowie die positive und negative Stimmung für jede der Kategorien „Anstieg“, „Abstieg“ und „Fazit“. Das haben wir. Außerdem haben wir alle Bilder durchgesehen und diese Kurventabelle erstellt.
Diese Tabelle enthält aktuell für jedes Fahrrad die jeweiligen Eigenschaften, darunter Anti-Squat, Anti-Rise, Rear Path und alle anderen Eigenschaften. Der X-Wert gibt an, wie weit das Fahrrad im Federweg eingefedert ist, und der Y-Wert den entsprechenden Wert an diesem Punkt.
Wir haben festgestellt, dass es bei diesen Fahrrädern große Unterschiede gibt. Manche haben 100 Millimeter Federweg, andere 180 Millimeter. Das hat uns Probleme bereitet, deshalb haben wir alle Federwege auf null und eins normiert. Anstatt also zu betrachten, wie weit sich das Rad bewegt hat, schauen wir uns an, in welchem Verhältnis der maximale Federweg sich das Fahrrad befindet. Liegt es bei 50 % oder am Minimum?
Um uns das im Functional Data Explorer anzusehen, möchten wir es etwas anders formatieren. Wir werden den Reisewert in einen Ordinalwert umwandeln und dann die Funktion „Tabulate“ verwenden. Jed und ich haben „Tabulate“ in diesem Projekt häufig genutzt. Wir können das Fahrrad nehmen, die Reise hinzufügen, die entsprechende Eigenschaft abrufen und dann den Y-Wert ermitteln.
Wir erstellen daraus eine Datentabelle, die etwas unübersichtlich wirkt, da die Werte nicht exakt übereinstimmen. Daher fehlen einige Werte, beispielsweise für den Pedalrückschlag, aber für alle anderen Parameter. Auch für das Hebelverhältnis ist ein Wert vorhanden, aber für keinen anderen Parameter. Das sieht zwar nicht besonders elegant aus, verursacht aber keine Probleme. Im Functional Data Explorer werden diese fehlenden Werte problemlos verarbeitet. Es entstehen also keine Schwierigkeiten. Daher ist alles in Ordnung.
Als Nächstes müssen wir diese Tabelle hier mit unserer Tabelle verknüpfen, die alle Fahrrad-Testbewertungen enthält. Am einfachsten geht das mit einer virtuellen Verknüpfung. Sie können hier die Link-ID aufrufen und dann hier eine Link-Referenz erstellen, um ein übersichtliches System zu gewährleisten. Ich rufe das jetzt auf.
Hier sehen Sie alle unsere Kurvendaten. Wir haben das Fahrrad, seine aktuelle Position im Federweg, den mittleren Anti-Rise- und Anti-Squat-Wert, das Hebelverhältnis, den Pedalrückschlag und die Hinterradbewegung. Außerdem sehen Sie hier unsere Stimmungsbewertungen.
Jetzt möchten wir diese Daten im Functional Data Explorer analysieren und untersuchen, wie die Stimmungsanalysen mit dem Kurvenverlauf zusammenhängen. Im Specialized Modeling Functional Data Explorer betrachten wir zunächst eine Kurve: den hinteren Pfad. Als Eingabewert für X verwenden wir die normalisierte Fahrstrecke und als ID den Fahrradnamen. Der eigentliche Clou ist, dass wir alle Stimmungsbewertungen in das Zusatzfeld einfügen.
Wenn der Functional Data Explorer ausgeführt wird, sehen diese Kurven sehr gut aus, da sie sehr glatt sind und aus Gelenken generiert werden. Daher passen B-Splines hervorragend zu ihnen. Wir können B-Splines an alle Kurven anpassen und sehen, dass die größte Variation in der Formfunktion 1 liegt. Wenn wir uns hier unten unser Diagnosediagramm ansehen, erkennen wir eine hohe Variation entlang der ersten Komponente. Entlang der zweiten Komponente gibt es hingegen nur geringe Variation. Wenn wir mit dem Mauszeiger darüberfahren, sehen wir: „Dieses Fahrrad hat eine Achse, die sich stark nach vorne bewegt. Und hier am anderen Ende haben wir eine Achse, die sich stark nach hinten bewegt. Das sind unsere beiden Extreme.“
Nachdem wir das erledigt haben, können wir nun unsere B-Spline-Funktion mit den zusätzlichen Daten anwenden. Da wir die Z zusätzlichen Faktoren hinzugefügt haben, können wir diese funktionale Versuchsplanung (DOE) durchführen. Dadurch wird der Zusammenhang zwischen den Stimmungsbewertungen und dem Verlauf des Rückwärtspfads hergestellt. Die Darstellung ist etwas schwer lesbar, da die Ausdrücke sehr lang sind. Die ersten drei Ausdrücke zeigen die allgemeine Stimmung für das Klettern, die positive Stimmung und die negative Stimmung für das Klettern.
Wenn wir uns nur auf das Klettern konzentrieren und eine wirklich positive Gesamtstimmung beim Klettern sowie eine sehr positive oder sehr niedrige negative Stimmung beim Klettern anstreben, sieht unser Fahrrad bzw. die Spur des Hinterrads folgendermaßen aus. Man sieht, dass dies eine ziemlich typische Spur des Hinterrads ist. Es bewegt sich weder besonders weit nach vorne noch besonders weit nach hinten. So bekommt man eine Vorstellung von einer typischen Spur des Hinterrads. Diesen Prozess können wir für jede unserer verschiedenen Spuren wiederholen. Genau das haben wir getan und diese Vorhersageformeln gespeichert.
Zum Schluss haben wir all diese Daten zusammengeführt und ein Profil erstellt, das uns anhand all unserer Rezensionen und der von uns erstellten Kurven zeigt, wie die Rezensionen und die Kurven zusammenhängen.
Hier kommt unser Fazit, also die positiven, negativen und Gesamtbewertungen sowie die positiven, negativen und Gesamtbewertungen für Bergauf- und Bergabfahrten. Schauen wir uns also an: „Wir suchen ein Fahrrad, das besonders bergab geeignet ist.“ Wir konzentrieren uns daher auf die Gesamtbewertung für Bergabfahrten. Wir wollen möglichst wenige negative und möglichst viele positive Werte.
Was bewirkt das? Vergleicht man diese Hinterradkurve mit den zuvor gesehenen, fällt auf, dass diese einen deutlich stärkeren Bogen beschreibt. Das ist logisch. So verhält es sich bei einem Fahrrad, bei dem das Hinterrad bei einem Hindernis auf dem Trail nach hinten ausweicht. Fährt man beispielsweise bergab und trifft auf einen Stein, weicht das Hinterrad aus.
Ein weiterer Punkt, den ich ansprechen möchte, ist das Hebelverhältnis. Ich habe es bereits erwähnt. Mountainbikes verwenden verschiedene Dämpfertypen: Stahlfederdämpfer und Luftdämpfer. Ohne auf die Details einzugehen, ist dies das typische Hebelverhältnis für einen Stahlfederdämpfer. Alle Downhill-Bikes sind mit Stahlfederdämpfern ausgestattet. Der große Trend in der Branche geht derzeit eindeutig dahin, Stahlfederdämpfer in Downhill-Bikes zu verbauen, da sie dort sehr gute Ergebnisse erzielen. Unsere Daten bestätigen dies ebenfalls.
Wir können uns auch das Gegenteil ansehen. Abfahrten sind uns jetzt weniger wichtig, dafür wollen wir richtig gute Klettereigenschaften. Wir wollen ein Bike für den Weltcup. Die Hinterbau-Bewegungskurve und die Anti-Rise-Funktion sehen jetzt etwas anders aus. Unser Hebelverhältnis ist typisch für Luftfederungen, wie sie bei kletterorientierten Bikes üblich sind, da diese deutlich leichter sind. Dadurch eignen sie sich viel besser für diese Fahrkategorie.
Die Idee dahinter ist, dass wir nicht zeigen wollen: „Okay, so sollte man ein Fahrrad designen“, sondern: „Okay, wir haben wirklich komplexe Daten.“ Wir haben Rezensionen von Testern auf einer Website. Wir haben Kurven, die als Diagramme angezeigt werden, und mit JMP können wir all das zusammenführen und in einem Dashboard visualisieren. Dieses Dashboard hilft uns sehr gut zu verstehen: „Okay, so hängen Rezensionen und diese Kennzahlen zusammen.“ Und es liefert uns Informationen, die uns helfen, die Zusammenhänge besser zu verstehen und fundierter vorzugehen als mit der einfachen Annahme: „Ich denke, es sollte so sein.“
Das war unsere Mitteilung. Sollten Sie noch Fragen haben, können Sie sich jederzeit an uns wenden. Vielen Dank für Ihre Zeit.