Ce filtre utilise un seuil de variation pour identifier les zones de bruit dans les données de fréquence cardiaque, et prédit les vraies valeurs de fréquence cardiaque à l'aide d'une régression linéaire.
Chaque intervalle de vitesse est analysé séparément pour le bruit, car on s'attend à ce que la fréquence cardiaque change rapidement si la vitesse change. L'intervalle 2 contient une quantité importante de bruit entre le temps=415 et le temps=625. Le seuil par défaut est de 10 bpm, et peut être ajusté en fonction du bruit présent dans les données.
Un modèle de régression linéaire est entraîné sur les données restantes de l'intervalle 2 pour prédire les valeurs réelles du bruit supprimé.
Les valeurs supprimées sont remplacées par les valeurs prédites par la régression linéaire.
$ pip install git+https://github.com/asc-csa/heart-rate-filtering.git
import hr_analysis as hr
df = pd.read_csv('data2.csv')
Attributs de données requis :
protocol_name
: nom de la sessiondate
: date de la session (AAAA-MM-JJ)sessionstarttime
: heure de début de session (YYYY-MM-DD HH:MM:SS)sampletime
: heure d'échantillonnage (YYYY-MM-DD HH:MM:SS)stage
: numéro de l'intervalle de vitessespeed
: vitesse (mph)heartrate_bpm
: fréquence cardiaque (battements par minute)
filtered_data = threshold_filter(df.heartrate_bpm.values, intervals_array=df.stage, threshold=5)
hr.plot(df, 'Example 1 : Unfiltered')
Les filtres incluent :
lowess
: lissage du nuage de points pondéré localement, frac=0.5mean
: moyenne mobile, fenêtre=7threshold
: filtre de seuil de variation
hr.plot(data, 'Example 1 : Filtered', filt='threshold', interval=5)
hr.plot_compare(df)
La solution pour filtrer la fréquence cardiaque est encore en cours de développement. Le seuil utilisé pour le filtrage nécessite une entrée manuelle, et le filtre de seuil utilise seulement une régression linéaire.
This filter uses a variation threshold to identify areas of noise in the heart rate data, and predicts the true heart rate values using a linear regression.
Each speed interval is analyzed for noise separately since it is expected that heart rate will change quickly if the speed changes. Interval 2 contains a significant amount of noise between time=415 and time=625. The default threshold is 10 bpm, and can be adjusted depending on the noise present in the data.
A linear regression model is trained on the remaining data within interval 2 to predict the true values of the deleted noise.
The deleted values are replaced with the predicted values from the linear regression.
$ pip install git+https://github.com/asc-csa/heart-rate-filtering.git
import hr_analysis as hr
df = pd.read_csv('data2.csv')
Required data attributes:
protocol_name
: session namedate
: session date (YYYY-MM-DD)sessionstarttime
: session start time (YYYY-MM-DD HH:MM:SS)sampletime
: sample time (YYYY-MM-DD HH:MM:SS)stage
: speed interval numberspeed
: speed (mph)heartrate_bpm
: heart rate (beats per minute)
filtered_data = threshold_filter(df.heartrate_bpm.values, intervals_array=df.stage, threshold=5)
hr.plot(df, 'Example 1: Unfiltered')
Filters include:
lowess
: locally weighted scatterplot smoothing, frac=0.5mean
: moving average, window=7threshold
: variation threshold filter
hr.plot(data, 'Example 1: Filtered', filt='threshold', interval=5)
hr.plot_compare(df)
The solution to filtering heart rate is still in development. The threshold used for filtering requires a manual input, and the threshold filter only uses a linear regression.