123

將HRV數據重新整理

篩選有HRV原始檔的個案:

  • 將原始HRV數據 與 3TP有被納入的個案(有失眠/無失眠)做對照,剩下33樣本數可被納入(同時有三次ISI+HRV原始資料)
    • 類別 0: 19 (57.6%)
    • 類別 1: 14 (42.4%) 👉 失眠組

原始檔HRV數據重新歸納:

  • 發現原始檔包涵7個ActivityCycles,用A1~A7做對應:
    • A1:閉眼基準期
    • A2:焦慮情境(刺激)
    • A3:焦慮情緒恢復
    • A4:正向情緒(刺激)
    • A5:正向情緒恢復
    • A6:睜眼基準線
    • A7:注意力評估

HRV原始檔前處理:NeuroKit2

  • /Users/yuchi/recalc_hrv_by_activity.py 做的,NeuroKit2 版本:0.2.12
    • 流程如下:
    • 讀取 Session.dat(float32, interleaved),取 EKG 通道
    • 降採樣:13,000 Hz 👉 1,000 Hz(DECIM=13)
    • nk.ecg_clean 清理波形
    • nk.ecg_peaks(method=“pantompkins1985”) 找 R-peaks
    • nk.signal_fixpeaks(method=“Kubios”) 修正 R-peaks
    • 最少 MIN_PEAKS=30 才計算

快速比較

比較項目樣本特徵評估設定代表結果(擇一最佳模型)
舊版(含 HRV)51BDI/BAI + HRV_SDNN_MS/LF/LF_HFStratified 5-foldNaiveBayes:AUC 0.945 / F1_pos 0.692 / Rec_pos 0.733
BDI/BAI 基準27BDI_T1, BAI_T1Repeated Stratified 5-fold x100NaiveBayes:AUC 0.939 / F1_pos 0.737 / Rec_pos 0.692
+ HRV_DeltaAttn_MeanNN27BDI/BAI + HRV_DeltaAttn_MeanNNRepeated Stratified 5-fold x100SVM:AUC 0.913 / F1_pos 0.735 / Rec_pos 0.686
+ HRV_ReturnPos_MeanNN27BDI/BAI + HRV_ReturnPos_MeanNNRepeated Stratified 5-fold x100NaiveBayes:AUC 0.916 / F1_pos 0.766 / Rec_pos 0.759
+ HRV_RecPos_RMSSD27BDI/BAI + HRV_RecPos_RMSSDRepeated Stratified 5-fold x100SVM:AUC 0.902 / F1_pos 0.770 / Rec_pos 0.725

重要提醒(比較時必須看)

  • 51 樣本 vs 27 樣本,樣本數不同會造成結果不可直接對照。
  • HRV 的 A1 靜息期多數只有 31 秒(27 人),LF/LFHF/VLF 在短時段容易不穩或 NaN。
  • 下面完整輸出保留是為了追溯每次方法,但重點比較以表格為主。

新增HRV欄位&重新計算

新增的 HRV 欄位為 90 個指標,對應 A1~A7 共 7 段。
欄位命名規則:HRV_A{1..7}_<指標>(每段都有同一套指標)。

指標中文對照
AI面積不對稱指數(Area Index,Poincare 圖上方扇形面積 / 全部扇形面積)
ApEn近似熵(Approximate Entropy)
C1a加速度對短期 HRV 的貢獻(短期加速度成分)
C1d減速度對短期 HRV 的貢獻(短期減速度成分)
C2a加速度對長期 HRV 的貢獻(長期加速度成分)
C2d減速度對長期 HRV 的貢獻(長期減速度成分)
CMSEn複合多尺度熵(Composite Multiscale Entropy)
CSI心交感指數(4×SD2 / 4×SD1)
CSI_Modified修正版 CSI((4×SD2)^2 / (4×SD1))
CVI心迷走指數(log((4×SD2)×(4×SD1)))
CVNNSDNN / MeanNN
CVSDRMSSD / MeanNN
Ca加速度對 HRV 的總貢獻
Cd減速度對 HRV 的總貢獻
DFA_alpha1DFA α1(短期相關)
DFA_alpha2DFA α2(長期相關)
FuzzyEn模糊熵(Fuzzy Entropy)
GIGuzik 指數(Poincare 圖上方點到 LI 的距離 / 全部點距離)
HF高頻功率
HFDHiguchi 分形維度
HFn高頻正規化功率(HF / TP)
HTIHRV 三角指數(HRV Triangular Index)
IALS加減速片段平均長度的倒數
IQRNNNN 間期四分位距
KFDKatz 分形維度
LF低頻功率
LFHFLF/HF 比值
LFn低頻正規化功率(LF / TP)
LZCLempel-Ziv 複雜度
LnHFHF 的自然對數
MCVNNMadNN / MedianNN
MFDFA_alpha1_AsymmetryMFDFA α1:非對稱比(譜峰中心性)
MFDFA_alpha1_DeltaMFDFA α1:譜線垂直距離(最大/最小 H 的 D 差)
MFDFA_alpha1_FluctuationMFDFA α1:h‑fluctuation 指數
MFDFA_alpha1_IncrementMFDFA α1:廣義 Hurst 指數增量累積
MFDFA_alpha1_MaxMFDFA α1:最大 H 對應的 D
MFDFA_alpha1_MeanMFDFA α1:H 的平均(min/max H 的平均)
MFDFA_alpha1_PeakMFDFA α1:譜峰 H(D 的峰值位置)
MFDFA_alpha1_WidthMFDFA α1:譜寬(多重分形寬度)
MFDFA_alpha2_AsymmetryMFDFA α2:非對稱比(譜峰中心性)
MFDFA_alpha2_DeltaMFDFA α2:譜線垂直距離(最大/最小 H 的 D 差)
MFDFA_alpha2_FluctuationMFDFA α2:h‑fluctuation 指數
MFDFA_alpha2_IncrementMFDFA α2:廣義 Hurst 指數增量累積
MFDFA_alpha2_MaxMFDFA α2:最大 H 對應的 D
MFDFA_alpha2_MeanMFDFA α2:H 的平均(min/max H 的平均)
MFDFA_alpha2_PeakMFDFA α2:譜峰 H(D 的峰值位置)
MFDFA_alpha2_WidthMFDFA α2:譜寬(多重分形寬度)
MSEn多尺度熵(Multiscale Entropy)
MadNNNN 間期中位數絕對偏差
MaxNN最大 NN 間期
MeanNN平均 NN 間期
MedianNN中位數 NN 間期
MinNN最小 NN 間期
PAS交替段比例(NN 交替片段比例)
PIPorta 指數(LI 下方點 / 全部點)
PIP反折點比例(RR 序列 inflection points 比例)
PSS短片段比例(short segments 百分比)
Prc20NNNN 間期第 20 百分位
Prc80NNNN 間期第 80 百分位
RCMSEn精煉複合多尺度熵(Refined Composite MSE)
RMSSD相鄰 RR 差值均方根
SPoincare 橢圓面積(pi × SD1 × SD2)
SD1Poincare SD1(短期變異)
SD1SD2SD1/SD2 比值
SD1a短期加速度變異
SD1d短期減速度變異
SD2Poincare SD2(長期變異)
SD2a長期加速度變異
SD2d長期減速度變異
SDANN11 分鐘 SDANN
SDANN22 分鐘 SDANN
SDANN55 分鐘 SDANN
SDNNNN 間期標準差
SDNNI11 分鐘 SDNN Index
SDNNI22 分鐘 SDNN Index
SDNNI55 分鐘 SDNN Index
SDNNa加速度對總變異的貢獻
SDNNd減速度對總變異的貢獻
SDRMSSDSDNN / RMSSD
SDSD相鄰 RR 差值標準差
SI斜率指數(Slope Index)
SampEn樣本熵(Sample Entropy)
ShanEnShannon 熵
TINN三角插值 NN 間期寬度
TP總功率
ULF超低頻功率
VHF超高頻功率
VLF甚低頻功率
pNN20相鄰 RR 差值 >20ms 的比例
pNN50相鄰 RR 差值 >50ms 的比例

Lasso Ranking結果

[模式] 允許模式

[資料] 來源=isi_raw_data_hrv_recalc  目標=3TP  樣本=33  特徵=502
  已排除群組:['ACS', 'CPT', 'EEG', 'IGT', 'ISI', 'PSQI', 'WM']
  總缺值比例:15.93%

[CV結果](分數 = neg_log_loss,越大越好 → log_loss 越小)
  lambda_min:C = 0.121784  |  lambda = 8.21124
  lambda_1SE:C = 0.0316228  |  lambda = 31.6228

[選入變項(1SE)] 以 |係數| 排序(前 30)
  (無變項被選入;可放寬正則或檢查特徵)

[對照] lambda_min 非零變項數:0,lambda_1SE 非零變項數:0

[Top 10(路徑峰值)] 不綁定單一 C
  HRV_A1_MFDFA_alpha1_Asymmetry
HRV_A6_MFDFA_alpha1_Fluctuation
       HRV_A3_MFDFA_alpha1_Peak
                      HRV_A1_AI
                     HRV_A1_VHF
                      HRV_A1_GI
              HRV_A7_DFA_alpha2
                     HRV_A5_PSS
        HRV_A1_MFDFA_alpha1_Max
                    HRV_A1_IALS

/Users/yuchi/PycharmProjects/PsyMl_Data/.venv/bin/python /Users/yuchi/PycharmProjects/PsyMl_ISI/ML/tools/lasso_ranking/1_lasso_stability_ranking.py 
[資料] 來源=isi_raw_data_hrv_recalc  目標=3TP  樣本=33  特徵=507

[穩定性排名] 已輸出:/Users/yuchi/PycharmProjects/PsyMl_ISI/ML/tools/outputs/lasso_stability_ranking.csv
                        feature  count  freq  mean_abs_coef
                   HRV_A1_MaxNN     19  0.95       0.563269
                      HRV_A1_AI     18  0.90       0.620554
              HRV_A7_DFA_alpha2     18  0.90       0.616384
HRV_A6_MFDFA_alpha1_Fluctuation     16  0.80       0.551282
                     HRV_A1_PAS     14  0.70       0.824222
                 HRV_A1_FuzzyEn     14  0.70       0.443284
                     HRV_A1_C1a     14  0.70       0.417144
                        HRV_VLF     14  0.70       0.365516
                      HRV_A1_PI     13  0.65       0.572847
                     HRV_A5_PSS     13  0.65       0.451678
                      HRV_A1_GI     13  0.65       0.450088
                      HRV_POWER     12  0.60       0.389745
                    HRV_SDNN_MS     12  0.60       0.378115
  HRV_A1_MFDFA_alpha1_Asymmetry     11  0.55       0.690607
                    HRV_A1_IALS     11  0.55       0.592682
                     HRV_A1_CVI     11  0.55       0.401740
                     HRV_A1_C1d     11  0.55       0.400680
                    HRV_A1_MSEn     11  0.55       0.400335
                     HRV_A1_SD1     11  0.55       0.384724
       HRV_A3_MFDFA_alpha1_Peak     10  0.50       0.648611

进程已结束,退出代码为 0
/Users/yuchi/PycharmProjects/PsyMl_Data/.venv/bin/python /Users/yuchi/PycharmProjects/PsyMl_ISI/ML/tools/lasso_ranking/1_lasso_stability_ranking.py 
[資料] 來源=isi_raw_data_hrv_recalc  目標=3TP  樣本=33  特徵=507

[穩定性排名] 已輸出:/Users/yuchi/PycharmProjects/PsyMl_ISI/ML/tools/outputs/lasso_stability_ranking.csv
                        feature  count  freq  mean_abs_coef
                      HRV_A1_AI    180 0.900       0.600884
                     HRV_A1_C1a    172 0.860       0.411920
              HRV_A7_DFA_alpha2    171 0.855       0.670273
                   HRV_A1_MaxNN    164 0.820       0.617135
                      HRV_A1_PI    156 0.780       0.597202
                        HRV_VLF    146 0.730       0.420770
       HRV_A3_MFDFA_alpha1_Peak    144 0.720       0.633010
                    HRV_A1_IALS    142 0.710       0.631554
  HRV_A1_MFDFA_alpha1_Asymmetry    140 0.700       0.708317
                     HRV_A1_CVI    139 0.695       0.390730
                     HRV_A1_C1d    137 0.685       0.385110
HRV_A6_MFDFA_alpha1_Fluctuation    134 0.670       0.580500
                 HRV_A1_FuzzyEn    131 0.655       0.444090
                     HRV_A5_PSS    125 0.625       0.552608
                    HRV_A1_SD1d    119 0.595       0.389789
                      HRV_A1_GI    114 0.570       0.419327
                     HRV_A1_SD1    114 0.570       0.379255
                       HRV_A1_S    113 0.565       0.365985
                     HRV_A1_PAS    109 0.545       0.682679
      HRV_A1_MFDFA_alpha1_Width    104 0.520       0.447055

进程已结束,退出代码为 0
  • 舊版HRV數據結果:
/usr/local/bin/python3.11 /Users/yuchi/PycharmProjects/ISI_New/ML/ml_benchmark_modular.py 

[資料] 目標=3TP 樣本=21 特徵=5
使用欄位:['BDI_T1', 'BAI_T1', 'HRV_SDNN_MS', 'HRV_LF', 'HRV_LF_HF']
[偵測] 目標型態:binary;classes=[0 1]

=== Basic ML Benchmark (Standard | Stratified 3-fold CV) | seed=42 ===
             model   AUC  F1_pos(=1)  Prec_pos  Rec_pos  F1_neg(=0)  Prec_neg  Rec_neg   MCC  Accuracy  Pred1_mean  Pred0_mean
        NaiveBayes 0.950       0.833     0.833    0.833       0.933     0.933    0.933 0.767     0.905       2.000       5.000
               SVM 0.933       0.611     0.833    0.500       0.873     0.822    0.933 0.530     0.810       1.333       5.667
LogisticRegression 0.900       0.611     0.833    0.500       0.873     0.822    0.933 0.530     0.810       1.333       5.667
      RandomForest 0.900       0.611     0.833    0.500       0.873     0.822    0.933 0.530     0.810       1.333       5.667
               KNN 0.867       0.444     0.667    0.333       0.884     0.794    1.000 0.430     0.810       0.667       6.333
      DecisionTree 0.717       0.611     0.833    0.500       0.873     0.822    0.933 0.530     0.810       1.333       5.667

--- Aggregated Confusion Matrix Sums (Standard) ---
             model  TN_sum  FP_sum  FN_sum  TP_sum
        NaiveBayes      14       1       1       5
               SVM      14       1       3       3
LogisticRegression      14       1       3       3
      RandomForest      14       1       3       3
               KNN      15       0       4       2
      DecisionTree      14       1       3       3

--- Specificity / Sensitivity (Standard) ---
             model  Specificity  Sensitivity
        NaiveBayes        0.933        0.833
               SVM        0.933        0.500
LogisticRegression        0.933        0.500
      RandomForest        0.933        0.500
               KNN        1.000        0.333
      DecisionTree        0.933        0.500


进程已结束,退出代码为 0

結論:

  • 數據怪怪的,用原始數據重算的HRV_相關數據,跟原始(實驗室系統算的)數值相差太多(皮爾森係數接近0,怪怪的)

    • HRV_SDNN_MS: Pearson -0.08
    • HRV_RMSSD_MS: Pearson -0.28
    • HRV_PNN50: Pearson -0.10
    • HRV_NN50: Pearson -0.10
    • HRV_EKG_HR: Pearson 0.20
    • HRV_EKG_HR_MAXMIN: Pearson 0.21
  • 靜息態的時間從31~91秒都有(原始檔),但是LF, LF_HF,VLF這種數據通常需要長時間(至少一分鐘),靜息態時間太短NeuroKit2直接報錯

    • A1 = 31 秒:27 人
    • A1 ≥ 60 秒:6 人
    • A1 ≥ 90 秒:6 人
    • A1 = 310 秒(約 5 分鐘):6 人