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) | 51 | BDI/BAI + HRV_SDNN_MS/LF/LF_HF | Stratified 5-fold | NaiveBayes:AUC 0.945 / F1_pos 0.692 / Rec_pos 0.733 |
| BDI/BAI 基準 | 27 | BDI_T1, BAI_T1 | Repeated Stratified 5-fold x100 | NaiveBayes:AUC 0.939 / F1_pos 0.737 / Rec_pos 0.692 |
| + HRV_DeltaAttn_MeanNN | 27 | BDI/BAI + HRV_DeltaAttn_MeanNN | Repeated Stratified 5-fold x100 | SVM:AUC 0.913 / F1_pos 0.735 / Rec_pos 0.686 |
| + HRV_ReturnPos_MeanNN | 27 | BDI/BAI + HRV_ReturnPos_MeanNN | Repeated Stratified 5-fold x100 | NaiveBayes:AUC 0.916 / F1_pos 0.766 / Rec_pos 0.759 |
| + HRV_RecPos_RMSSD | 27 | BDI/BAI + HRV_RecPos_RMSSD | Repeated Stratified 5-fold x100 | SVM: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))) |
| CVNN | SDNN / MeanNN |
| CVSD | RMSSD / MeanNN |
| Ca | 加速度對 HRV 的總貢獻 |
| Cd | 減速度對 HRV 的總貢獻 |
| DFA_alpha1 | DFA α1(短期相關) |
| DFA_alpha2 | DFA α2(長期相關) |
| FuzzyEn | 模糊熵(Fuzzy Entropy) |
| GI | Guzik 指數(Poincare 圖上方點到 LI 的距離 / 全部點距離) |
| HF | 高頻功率 |
| HFD | Higuchi 分形維度 |
| HFn | 高頻正規化功率(HF / TP) |
| HTI | HRV 三角指數(HRV Triangular Index) |
| IALS | 加減速片段平均長度的倒數 |
| IQRNN | NN 間期四分位距 |
| KFD | Katz 分形維度 |
| LF | 低頻功率 |
| LFHF | LF/HF 比值 |
| LFn | 低頻正規化功率(LF / TP) |
| LZC | Lempel-Ziv 複雜度 |
| LnHF | HF 的自然對數 |
| MCVNN | MadNN / MedianNN |
| MFDFA_alpha1_Asymmetry | MFDFA α1:非對稱比(譜峰中心性) |
| MFDFA_alpha1_Delta | MFDFA α1:譜線垂直距離(最大/最小 H 的 D 差) |
| MFDFA_alpha1_Fluctuation | MFDFA α1:h‑fluctuation 指數 |
| MFDFA_alpha1_Increment | MFDFA α1:廣義 Hurst 指數增量累積 |
| MFDFA_alpha1_Max | MFDFA α1:最大 H 對應的 D |
| MFDFA_alpha1_Mean | MFDFA α1:H 的平均(min/max H 的平均) |
| MFDFA_alpha1_Peak | MFDFA α1:譜峰 H(D 的峰值位置) |
| MFDFA_alpha1_Width | MFDFA α1:譜寬(多重分形寬度) |
| MFDFA_alpha2_Asymmetry | MFDFA α2:非對稱比(譜峰中心性) |
| MFDFA_alpha2_Delta | MFDFA α2:譜線垂直距離(最大/最小 H 的 D 差) |
| MFDFA_alpha2_Fluctuation | MFDFA α2:h‑fluctuation 指數 |
| MFDFA_alpha2_Increment | MFDFA α2:廣義 Hurst 指數增量累積 |
| MFDFA_alpha2_Max | MFDFA α2:最大 H 對應的 D |
| MFDFA_alpha2_Mean | MFDFA α2:H 的平均(min/max H 的平均) |
| MFDFA_alpha2_Peak | MFDFA α2:譜峰 H(D 的峰值位置) |
| MFDFA_alpha2_Width | MFDFA α2:譜寬(多重分形寬度) |
| MSEn | 多尺度熵(Multiscale Entropy) |
| MadNN | NN 間期中位數絕對偏差 |
| MaxNN | 最大 NN 間期 |
| MeanNN | 平均 NN 間期 |
| MedianNN | 中位數 NN 間期 |
| MinNN | 最小 NN 間期 |
| PAS | 交替段比例(NN 交替片段比例) |
| PI | Porta 指數(LI 下方點 / 全部點) |
| PIP | 反折點比例(RR 序列 inflection points 比例) |
| PSS | 短片段比例(short segments 百分比) |
| Prc20NN | NN 間期第 20 百分位 |
| Prc80NN | NN 間期第 80 百分位 |
| RCMSEn | 精煉複合多尺度熵(Refined Composite MSE) |
| RMSSD | 相鄰 RR 差值均方根 |
| S | Poincare 橢圓面積(pi × SD1 × SD2) |
| SD1 | Poincare SD1(短期變異) |
| SD1SD2 | SD1/SD2 比值 |
| SD1a | 短期加速度變異 |
| SD1d | 短期減速度變異 |
| SD2 | Poincare SD2(長期變異) |
| SD2a | 長期加速度變異 |
| SD2d | 長期減速度變異 |
| SDANN1 | 1 分鐘 SDANN |
| SDANN2 | 2 分鐘 SDANN |
| SDANN5 | 5 分鐘 SDANN |
| SDNN | NN 間期標準差 |
| SDNNI1 | 1 分鐘 SDNN Index |
| SDNNI2 | 2 分鐘 SDNN Index |
| SDNNI5 | 5 分鐘 SDNN Index |
| SDNNa | 加速度對總變異的貢獻 |
| SDNNd | 減速度對總變異的貢獻 |
| SDRMSSD | SDNN / RMSSD |
| SDSD | 相鄰 RR 差值標準差 |
| SI | 斜率指數(Slope Index) |
| SampEn | 樣本熵(Sample Entropy) |
| ShanEn | Shannon 熵 |
| 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 人