FlexTail Sensor Evaluation Series
Positionswechsel im Sitzen: Zustandsübergänge in kontinuierlichen Haltungsdaten erkennen
Ein technischer Bericht zum zweistufigen Workflow für Positionswechsel im Sitzen: Sticky-Reference-Erkennung innerhalb eines Tages, Änderungen von täglichen Haltungsvektoren, expositionsnormalisierte Raten und Sensitivitätsanalyse.
Veröffentlicht
Die Frage hinter einer Positionswechselzählung
Mittlere Haltung ist nicht gleich Haltungsverhalten. Zwei Büroarbeitende können eine vergleichbare mittlere Lumbalflexion haben, obwohl eine Person oft die Position wechselt und die andere lange nahezu statisch bleibt. Die Analyse von Sitting Position Change (SPC) macht diesen Unterschied zu einer expliziten, reproduzierbaren Ereignisdefinition.
Das Playbook verwendet 31 verfügbare Aufzeichnungstage in zwei getrennten Analysen: Intra-Day SPC erkennt diskrete Haltungsänderungen innerhalb einer Sitzung; Day-to-Day SPC erkennt geänderte tägliche Haltungsprofile zwischen aufeinanderfolgenden Tagen. Sie beantworten verschiedene Fragen und dürfen nicht in einer Ereigniszahl zusammengeführt werden. Keines der Maße ist unmittelbar ein Maß für Unbehagen, Pausen oder muskuloskelettales Risiko.
Stufe 1: Sticky-Reference-Detektor
Zum Zeitpunkt $t$ ist der dreidimensionale Haltungsvektor in Grad
$$\mathbf p(t)=\begin{bmatrix}L(t)\\mathrm{Lat}(t)\S_{\mathrm{approx}}(t)\end{bmatrix},\qquad
Ein Ereignis wird nur akzeptiert, wenn
$$d(t)\geq15^\circ,\qquad t-t_{\mathrm{last}}\geq120\ \mathrm{s},\qquad m(t)\leq m_{\mathrm{gate}}.$$
Die Referenz ist sticky: Sie wird erst nach einem akzeptierten Wechsel aktualisiert. Der Detektor fragt damit nach einer materiell anderen, stabilen Haltung und nicht nach einer Änderung gegenüber dem vorherigen Frame. Die zweiminütige Sperrzeit verhindert Mehrfachereignisse in langsamen Übergängen; das Bewegungstor schließt Phasen aus, in denen die Haltung nicht als stabil sitzend interpretierbar ist.
from flexlib import FlexReader, create_dataframe
from ergo_analysis.spc import SittingPositionChangesCalculator
recording = FlexReader.parse(str(rsf_path))
spc = SittingPositionChangesCalculator.compute(create_dataframe(recording.measurements))
duration_h = spc.sitting_duration.total_seconds() / 3600
print(f"{spc.position_change_count} changes over {duration_h:.1f} h "
f"({spc.position_changes_per_hour:.1f}/h)")
Die Paketversion und ihre Konfiguration gehören zur Analyseumgebung. Eine unabhängige Reimplementierung kann an Schwellen subtile Zähldifferenzen erzeugen.
Distanz, Tagesprofile und Raten
Die euklidische Distanz behandelt ein Grad in jeder Komponente gleich. Bei unterschiedlichen Rauschpegeln wäre eine Mahalanobis-Distanz $d_\Sigma(t)=\sqrt{(\mathbf p-\mathbf p_{\mathrm{ref}})^\mathsf{T}\boldsymbol\Sigma^{-1}(\mathbf p-\mathbf p_{\mathrm{ref}})}$ eine sinnvolle Sensitivitätsanalyse. Der transparente 15-Grad-Detektor beansprucht keine universelle Optimalität.
Für Tagesprofile werden Differenzen der lumbalen, sagittalen und Torsions-Zusammenfassung durch $\tau_L=5^\circ$, $\tau_S=8^\circ$ und $\tau_T=10^\circ$ normiert:
$$C_t=\sqrt{\left(\frac{\Delta L_t}{\tau_L}\right)^2+\left(\frac{\Delta S_t}{\tau_S}\right)^2+\left(\frac{\Delta T_t}{\tau_T}\right)^2}.$$
Bei $C_t>1$ und einer Fenster-Sperrzeit wird ein Wechsel markiert. Die Schwellen codieren relative Sensitivität, keine biologische Gleichwertigkeit. Rohzählungen sind bei unterschiedlichen Sitzdauern nicht vergleichbar. Die Rate normalisiert daher auf berechtigte Sitzzeit:
$$\mathrm{rate}(h,p)=\frac{n_{\mathrm{events}}(h,p)}{t_{\mathrm{sitting}}(h,p),[\mathrm{min}]}\times60\quad[\mathrm{Ereignisse/Stunde}].$$
Stunden mit weniger als fünf Minuten Sitzzeit werden ausgeschlossen. Berichten Sie Rate und Interevent-Intervall: Die Rate beschreibt Häufigkeit, die Intervallverteilung lange statische Abschnitte.
Sensitivität und Interpretation
Distanzschwelle, Sperrzeit und Bewegungstor sind Analyseparameter. Das Playbook vergleicht beispielsweise 10/15/20 Grad, 60/120/180 Sekunden und 2/5/10 Minuten Mindestexposition. Für jede Einstellung sollten Gesamtzahl, Ereignisse pro Stunde, Medianintervall und Rangfolge der Teilnehmenden berichtet werden. Wenn sich die Kernaussage ändert, ist sie schwellenwertsensitiv. Eine verblindete manuelle Annotation eines Teilbestands ist der nächste Validierungsschritt.
Ein Positionswechsel ist nicht automatisch günstig und Stillstand nicht automatisch schädlich. Die Kennzahl beschreibt die Entwicklung des gemessenen Haltungsvektors bei spezifizierten Schwellen. Ein Forschungsbericht muss Aufzeichnungsdauer, berechtigte Sitzminuten, Abtastrate, alle Schwellen, Ausschlüsse und die vollständige Verteilung personenbasierter Raten enthalten.
Methodenreferenz
Die Auszüge verwenden flexlib-DataFrame-Verarbeitung und die API ergo_analysis für Positionswechsel im Sitzen. Ereignisdefinition, Normalisierung und Sensitivitätsparameter sind hier dokumentiert, damit die Methode ohne interne Projektdateien reproduziert oder angepasst werden kann.