Counting Sit-to-Stand: One Algorithm, Two Jobs

Counting Sit-to-Stand: One Algorithm, Two Jobs

By Harith Abdullah and Jong Chern Lim

What a small Shimmer3R experiment taught us about clinical tests, everyday monitoring, and product design

 

Counting sit-to-stand transitions sounds simple: someone stands up, and you count it. An accelerometer, however, does not see a person standing. It records changes in movement and orientation, and an algorithm must decide which of those signals represents a sit-to-stand transition.

That decision depends on the setting. In daily life, a stand may appear among walking, fidgeting, leaning, and other movements. In a clinical test, several stands may happen quickly with barely a pause between them. We wanted to see how the open-source Scikit Digital Health (SKDH) Sit2Stand detector handled both situations using data from a Shimmer3R accelerometer.

A small experiment

We placed a Shimmer3R sensor on the lower back and pressed a button whenever we observed a stand. That gave us a simple reference for checking the algorithm.

Our sessions included a few deliberate stands, a five-times-sit-to-stand test, ten brisk repetitions, a mixed stress test, and a seated negative control. Altogether, we marked 32 stands.

The stress test was the hard one: 14 stands split across three back-to-back blocks, with no long rest between them:

  • Fast ×5: stand and sit as quickly as is safe.
  • Slow and gentle ×4: rise deliberately over several seconds.
  • No pause ×5: stand and sit repeatedly without pausing in the seated position.
    Each block challenged the detector differently. Fast repetitions compressed the signal into a short period, gentle rises produced smaller acceleration changes, and no-pause repetitions removed the stillness the default configuration expects. Together, they helped show which movements the accelerometer-based detector could—and could not—see.

The negative control took the opposite approach: zero stands. While seated, the participant leaned, shifted weight, crossed their legs, and performed a few slow forward bends, but never stood up. This was our guard rail. It is easy to make a detector count more events by lowering its thresholds; the negative control helped us check that we had not simply made it count everything.

Scenario Actual SKDH default Tuned
Preflight
3
3
3
Clinical 5xSTS
5
5
5
Cadence-10
10
1
10
Stress test
14
4
12
Negative Control
Zero
1 false positive
Zero
Total
32
13+1 false positive
30 (94%)

Why did the default miss so many?

The default configuration looks for stillness around each transition. That is useful in daily-life monitoring, where the algorithm needs to separate a genuine stand from other movement.

Brisk clinical tests are different. One repetition flows into the next, so there may be little stillness to find. The detector was not necessarily doing a bad job; it was simply dressed for a different occasion.

Letting the algorithm loosen up

We tried settings that were more comfortable with continuous movement:

  • stillness_constraint=False
  • long_still reduced from 0.5 to 0.3 seconds
  • still_window reduced from 0.3 to 0.2 seconds
  • power_std_height=False, which removed the false positive in our negative control

The tuned detector found 30 of the 32 marked stands, compared with 13 using the defaults, and produced no false positives in the negative-control session.

The two misses were slow, gentle rises with smaller acceleration changes. Catching those without also counting unrelated movement is the next challenge.

Promising, but not a victory lap

This was one participant, one sensor, and a small set of controlled sessions. We also tuned and assessed the settings on the same data. In other words, this was an experiment, not a validation study.

We did not test normal daily life either. A free-living recording includes walking, stairs, transport, posture changes, and plenty of movement that our sessions did not cover. The tuned settings are worth exploring for repeated clinical tests, but they are not ready to replace everyday-monitoring settings.

One algorithm, two modes?

The results point towards two possible modes:

  • Everyday monitoring: tuned for isolated transitions and fewer false positives from daily movement.
  • Repeated clinical STS: tuned for quick, continuous repetitions without expecting stillness between them.

Users should not need to choose values such as 0.2 or 0.3 seconds. Ideally, they would choose the task, and the software would apply settings validated for that context.

That idea still needs testing across more participants, movement abilities, body sizes, chair heights, sensor placements, and real-world conditions.

What this means for products

A guided five-times-sit-to-stand or 30-second chair-stand test already knows what the participant is doing, so choosing the right mode is relatively straightforward.

General-purpose platforms such as Consensys or Verisense have a harder job: a recording could contain a clinical test, ordinary daily life, or something else entirely. For now, a practical option is to collect the sensor data through the platform and run the detector in an external analysis pipeline, where the use case and settings can be documented clearly.

As the evidence grows, well-tested modes could move into the product without asking users to become algorithm-parameter experts.

The takeaway

In our small dataset, tuning SKDH for continuous movement improved repeated sit-to-stand detection from 13 of 32 stands to 30 of 32. That is an encouraging result, not a universal recipe.

The interesting lesson is simple: the same movement can become a different measurement problem depending on when and why it happens. The next step is to see whether these findings hold up on larger, more varied datasets.

Have you worked with sit-to-stand detection or faced a similar context problem? We would love to hear your thoughts.

 

5 1 vote
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
0
Would love your thoughts, please comment.x
()
x