如何计算 Python 中信号的日间稳定性?
How to calculate interdaily stability for signal in Python?
我正在尝试计算日间稳定性作为 Python 中机器学习分类的一个特征。我的数据是多天的 - 我正在使用 this dataset (sample CSV)。此数据以分钟频率采样,即我们每小时进行 60 次测量。公式是:
所以我的做法是:
def interdaily_stability(df: pd.DataFrame) -> float:
X_mean = df["activity"].mean()
hourly_means = df.resample("H", on="timestamp").mean()["activity"].values
p = len(hourly_means)
numerator = (1/p) * np.sum(np.square((hourly_means - X_mean)))
denominator = df["activity"].var()
return numerator / denominator
- 这个公式对吗?特别是
p
对吗?
- 特别是,我是否计算了好几天的正确率?如果不是,我该如何更正?
我知道 pyActigraphy 存在,但那里的实施似乎不适合我的情况,例如那里的数据首先用 .resample("1H").sum()
重新采样,然后按小时、分钟和秒分组(我什至没有这样的分辨率)。
我也尝试从 nparACT
库中翻译 R 中的代码,但我对 R 的了解还不够好:nparACT implementation.
看起来你的实现是正确的,因为我也在尝试量化 rest-activity 节奏并使用计算的分数,建模该时间序列的可行性与否。
探索之后,可以简化日间稳定性 量化activity 模式在一段时间内的一致性。
def interdaily_stability(df: pd.DataFrame,activity_col) -> float:
'''
Interdaily stability was centered and normalized by
subtracting the overall mean and dividing by the overall
standard deviation.
ref: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4542004/
'''
# Calculating Mean of the OP Signal
X_mean = df[activity_col].mean()
# Converting to hourly format and computing mean per hour
hourly_means = df.resample("H", on="timestamp").mean()[activity_col].values
# Capturing number of hours we have in our dataset
p = len(hourly_means)
# Centering and normalizing by subtracting the overall mean
numerator = (1/p) * np.sum(np.square((hourly_means - X_mean)))
# Overall standard deviation
denominator = df[activity_col].var()
return numerator / denominator
docstring 中提到的那篇文章是简化方程 a but 的文章。
实际等式如下所示:
这项工作正在进行中。
我正在尝试计算日间稳定性作为 Python 中机器学习分类的一个特征。我的数据是多天的 - 我正在使用 this dataset (sample CSV)。此数据以分钟频率采样,即我们每小时进行 60 次测量。公式是:
所以我的做法是:
def interdaily_stability(df: pd.DataFrame) -> float:
X_mean = df["activity"].mean()
hourly_means = df.resample("H", on="timestamp").mean()["activity"].values
p = len(hourly_means)
numerator = (1/p) * np.sum(np.square((hourly_means - X_mean)))
denominator = df["activity"].var()
return numerator / denominator
- 这个公式对吗?特别是
p
对吗? - 特别是,我是否计算了好几天的正确率?如果不是,我该如何更正?
我知道 pyActigraphy 存在,但那里的实施似乎不适合我的情况,例如那里的数据首先用 .resample("1H").sum()
重新采样,然后按小时、分钟和秒分组(我什至没有这样的分辨率)。
我也尝试从 nparACT
库中翻译 R 中的代码,但我对 R 的了解还不够好:nparACT implementation.
看起来你的实现是正确的,因为我也在尝试量化 rest-activity 节奏并使用计算的分数,建模该时间序列的可行性与否。
探索之后,可以简化日间稳定性 量化activity 模式在一段时间内的一致性。
def interdaily_stability(df: pd.DataFrame,activity_col) -> float:
'''
Interdaily stability was centered and normalized by
subtracting the overall mean and dividing by the overall
standard deviation.
ref: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4542004/
'''
# Calculating Mean of the OP Signal
X_mean = df[activity_col].mean()
# Converting to hourly format and computing mean per hour
hourly_means = df.resample("H", on="timestamp").mean()[activity_col].values
# Capturing number of hours we have in our dataset
p = len(hourly_means)
# Centering and normalizing by subtracting the overall mean
numerator = (1/p) * np.sum(np.square((hourly_means - X_mean)))
# Overall standard deviation
denominator = df[activity_col].var()
return numerator / denominator
docstring 中提到的那篇文章是简化方程 a but 的文章。
实际等式如下所示:
这项工作正在进行中。