FlexTail Sensor Evaluation Series

Aktivitätskinematik: Die Form der Verteilung lesen, nicht nur den Mittelwert

Wie FlexTail-Aktivitätsaufzeichnungen mit teilnehmendenbewussten Verteilungen, gemeinsamen Haltungsräumen und einer reproduzierbaren Korrektur der aktuellen sagittal-lateralen Plotimplementierung analysiert werden.

Veröffentlicht

Warum eine Aktivität eine Verteilung braucht

Eine Minute Hausarbeit kann aufrechtes Stehen, Greifen, Beugen, Drehen und die Rückkehr in eine Neutralstellung enthalten. Ein einzelner Mittelwert unterscheidet nicht zwischen einer durchgehend moderaten Haltung und einer überwiegend neutralen Aufgabe mit tiefen Beugungsspitzen. Das Aktivitätsprofil beginnt daher mit der vollständigen empirischen Verteilung der Lumbalflexion jeder Aktivität, für die Visualisierung über die zehn HAR-Teilnehmenden gepoolt.

Für Aktivität $a$ mit Lumbalwerten $b_{a,1},\ldots,b_{a,n_a}$ gilt

$$\widehat F_a(x)=\frac{1}{n_a}\sum_{i=1}^{n_a}\mathbb{1}(b_{a,i}\leq x).$$

Der Violinplot zeigt diese geglättete Verteilung mit Boxplot für Median und Interquartilsabstand. Er ist explorativ, kein Populationsmodell. Seine Breite hängt von Bandbreite und Stichprobendichte ab; Schlussfolgerungen sollten auf Quantilen und Zusammenfassungen je Person beruhen.

act_bends = {activity: [] for activity in ACTIVITIES}
for (participant, activity), bend in recordings.items():
    act_bends[activity].extend(bend.tolist())
parts = ax.violinplot([act_bends[activity] for activity in ACTIVITIES],
                      showmedians=True, showextrema=True)

Diese Darstellung beschreibt die Haltungshülle auf Sample-Ebene, gewichtet Personen aber nicht gleich: längere oder höherfrequent abgetastete Aufzeichnungen tragen mehr Frames bei. Für Aussagen über Personen wird zuerst je Person und Aktivität zusammengefasst, etwa mit Median, $P90$, Zeit über 20 Grad und Interquartilsabstand.

Teilnehmendenbewusste Zusammenfassung

Sei $b_{p,a,i}$ Frame $i$ von Person $p$ bei Aktivität $a$. Zuerst wird innerhalb einer Person zusammengefasst:

$$\bar b_{p,a}=\frac{1}{n_{p,a}}\sum_{i=1}^{n_{p,a}}b_{p,a,i},\qquad \bar b_a^{(P)}=\frac{1}{P_a}\sum_{p=1}^{P_a}\bar b_{p,a}.$$

So erhält jede Person gleiches Gewicht. Frames sind in Aufzeichnungen und diese in Personen verschachtelt. Wenn Kovariaten oder Hypothesentests benötigt werden, bildet ein Mixed-Effects-Modell diese Struktur ab:

$$b_{p,a,i}=\beta_0+\beta_a+u_p+\epsilon_{p,a,i}.$$

Zeitliche Autokorrelation verhindert, dass alle Frames als unabhängige Beobachtungen behandelt werden: Das würde Unsicherheit zu klein schätzen. Downsampling, Block-Bootstrapping oder die Modellierung serieller Korrelation sind geeigneter.

Aufgabensignaturen im Haltungsraum

Ein Sample lässt sich als Haltungsvektor darstellen:

$$\mathbf{x}i=\begin{bmatrix}\theta{\mathrm{lat},i}\\theta_{\mathrm{sag},i}\end{bmatrix}.$$

Mittelwertvektor und Kovarianzmatrix einer Aktivität beschreiben typische Lage, Streuung und Kopplung:

$$\boldsymbol\Sigma_a=\frac{1}{n_a-1}\sum_{i=1}^{n_a}(\mathbf{x}_i-\boldsymbol\mu_a)(\mathbf{x}_i-\boldsymbol\mu_a)^\mathsf{T}.$$

Längliche Konturen weisen auf gemeinsame Variation hin, kompakte Konturen nahe Null auf einen engen Haltungsbereich. Gekrümmte oder mehrgipflige Formen können Phasen einer Aufgabe zeigen; dann sind Scatterplot oder Dichtekarte informativer als Kovarianz allein.

Das Kapitel bezeichnet die bestehende Grafik als Analyse von Lumbalflexion und axialer Torsion. Der Code für ch06_lumbar_twist_joint.pdf liest derzeit jedoch lateral und sagittal:

lat_all.extend(np.degrees(df["lateral"].values).tolist())
sag_all.extend(np.degrees(df["sagittal"].values).tolist())
ax.scatter(lat[idx_s], sag[idx_s], s=4, alpha=0.25)

Für Reproduzierbarkeit heißt der vorhandene Output in diesem Bericht gemeinsame sagittal-laterale Verteilung. Er darf nicht als Torsionsgrafik zitiert werden, solange die Implementierung nicht twist liest und Achsen, Beschriftung und Legende angepasst sind. Das ist eine Dokumentationskorrektur, keine Aussage über das Studienergebnis.

Eine echte Flexions-Torsions-Analyse

Für axiale Rotation muss bewusst zwischen vorzeichenbehafteter und absoluter Torsion gewählt werden. Vorzeichen erhalten Links-Rechts-Richtung; der Betrag misst Asymmetriestärke und faltet beide Richtungen zusammen.

lumbar_deg = np.degrees(df["lumbarAngle"].to_numpy())
twist_deg = np.degrees(df["twist"].to_numpy())
joint_signed = pd.DataFrame({"lumbar": lumbar_deg, "twist": twist_deg})
joint_magnitude = pd.DataFrame({"lumbar": lumbar_deg, "twist": np.abs(twist_deg)})

Die Kopplung sollte je Person und Aktivität berechnet und dann als Verteilung berichtet werden, zum Beispiel

$$\rho_{a,p}=\operatorname{cor}(\theta_{\mathrm{lumbar}},|\theta_{\mathrm{twist}}|)_{a,p}.$$

Ein gepoolter Korrelationswert kann durch Unterschiede der individuellen Ausführungsstrategie verzerrt sein, eine Form von Aggregationsbias.

Berichterstattung und Grenzen

Staubsaugen, Wischen und Geschirrspüler-Aufgaben erfordern typischerweise Greifen und Vorneigung, Tischaufgaben eher aufrechte Konfigurationen. Dennoch variieren Stand, Werkzeuglänge, Arbeitsflächenhöhe, Reichweite und Tempo. Ein Gruppenmittel beschreibt einen Aufgabenkontext, keine unveränderliche Haltungsanforderung.

Prüfen Sie je Aktivität zentrale Lage, Expositionsrand, Variabilität und Kopplung. Zeitfenster ergänzen eine fünfte Ebene und unterscheiden einen Übergang zur anhaltenden Vorbeuge von raschem Wechsel. Rohwerte in Radiant und abgeleitete Gradwerte bleiben getrennt; flexlib-Kanalbedeutungen müssen vor einer neuen Studie mit Versionsangabe und Kalibrierung geprüft werden. Die kontrollierten Aktivitäten sind keine repräsentative Erhebung häuslicher Arbeit. Sie stützen beschreibende Aussagen innerhalb dieses Protokolls, nicht Aussagen zu Verletzungsrisiko, Krankheit oder allen Vorkommen einer Aktivität.

Quelle

  • Walkling J, Masch A, Sander L, Deserno TM. Wearable Spine Tracker vs. Video-Based Pose Estimation for Human Activity Recognition. Sensors. 2025;25(12):3806. doi:10.3390/s25123806