STEP 01 / RAW
元の波形を見る
図のここ:半透明の波形の束。
読む:外れ値、群ごとの高さ、ピークの位置ずれ、波形の欠けを確認する。ここを飛ばすと、外れ値や前処理の影響をPCの意味だと誤読しやすい。
Functional data analysis / visual lecture note
Functional PCA(FPCA)は、時間に沿って並ぶ101点を別々の変数として眺めるだけでなく、一つの波形として扱い、波形同士の違いを少数の主成分関数へ圧縮する。
SOURCE NOTE 参照講義「functional PCA講義」と添付PDFをもとに再構成。下の5図はgpt-image2で生成した概念図で、測定値そのものではありません。
00 / orientation
直感から数式へ、数式から実装へ、最後に「その結果を信じてよいか」まで進む。迷ったら、いつでも3行の定義へ戻る。
01 / big picture
普通のPCAの「矢印」を、波形の時間軸へ戻して考える。両者の中心化は同じで、違いはデータをベクトルとして扱うか、関数として扱うかにある。
gpt-image2による概念図。説明用のイラストであり、特定データの推定結果ではない。
FPCAは、波形の変動を「共通の形」×「個人ごとの量」に分ける。
平均波形 μ(t) に、主成分関数 φk(t) を、対象者ごとのスコア ξik だけ足し引きする。
普通のPCAもFPCAも通常は平均を引いてから変動を分析する。「普通のPCAは生データ、FPCAは平均との差」という区別ではない。
| 観点 | 普通のPCA | FPCA |
|---|---|---|
| 入力 | p個の変数を持つベクトル | 時間 t に沿った波形 xi(t) |
| 主成分 | 主成分ベクトル vk | 主成分関数・固有関数 φk(t) |
| score | xiTvk | ∫[xi(t)−μ(t)]φk(t)dt |
| 読み方 | 変数の組み合わせ方向 | 波形がどの時間帯で、どう違うか |
02 / representation
101点は計算上の格子。FPCAが見たいのは点の列そのものではなく、その背後にある時間連続の変動である。
歩行1周期を0–100%に正規化し、101点で記録しても、1人のデータは「101個の無関係な測定値」ではない。隣り合う時点は連続した波形としてつながっている。
基底展開では、波形をB-splineやFourierなどの基底関数の組み合わせで近似する。基底展開とFPCAは別の処理であり、前者は表現、後者は変動の要約。
赤は一緒に上がる時間帯、緑は一方が上がると他方が下がる時間帯。対角線はその時点の分散を表す。
02+ / basis intuition
チャットで最もつまずきやすかった「basisって何?」「Gaussianのように無限に続く?」「サブグループ波形?」を、部品・局所性・係数の3段階でほどく。
gpt-image2による教育用概念図。図中の曲線・係数は仕組みを示す模式表現で、測定データではない。
basis functionは、被験者を分けたサブグループの代表波形ではない。1本の波形を表現するための、再利用できる部品となる曲線である。
係数 cim は「被験者 i の波形を作るために、部品 Bm をどれくらい使うか」。
下の小山はそれぞれの担当範囲を持ち、範囲外では厳密に0になる。
cubic B-splineなら、角ばった三角形ではなく、隣と重なりながら滑らかな曲線になる。
立脚初期だけ、ピーク付近だけ、という局所変化を表現しやすい。範囲外は完全に0。
ノットは小山の区切りや重なり方を決める軸上の点。基底の形と局所範囲を左右する。
各部品に係数を掛けて足す。係数が大きい区間ほど、完成波形に強く表れる。
「端が降りても無限に続くガウス関数みたいなもの?」への答えは、似ているが違う。
B-splineの小山が横一列に少しずつ重なるから、全体として滑らかな波形を作れる。
各被験者の係数を平均すれば、平均波形の係数になります。さらに、
つまりbasis-based FPCAは、係数の平均からのズレを材料に、主要な波形差を探すとも言える。
| もの | 役割 | たとえるなら |
|---|---|---|
| basis function | 1本の波形を作る部品 | 小さな曲線パーツ |
| FPCA | 被験者間の主要な波形差を探す | 変動の軸を見つける分析 |
| cluster | 被験者を波形タイプごとに分ける | 似た人を同じグループにする処理 |
必ずしもそうではない。B-spline basis同士は一般に直交しないため、本格的なbasis FPCAでは、
というGram行列を考慮する。格子上の101点が揃っているならgrid-based FPCAで十分な場合もあるが、ノイズ・不均一な時刻・欠測があるとbasis表現が有用になる。
03 / covariance
「時間sのズレ」と「時間tのズレ」が、対象者間で同じ方向に出るか、逆方向に出るかを集約したもの。
mean function
時間ごとの平均をつないだもの。まずは「典型的な波形」を置く。
covariance function
2つの時点のズレの連動。C(t,t) はその時点の分散。
sampled matrix
101点にサンプリングすれば、連続関数の共分散を行列として近似できる。
共分散関数は「どの時間帯同士が一緒に動くか」の材料。そこから、変動を最もよく説明する波形パターン φ1(t), φ2(t), … を取り出す。
20%時点で平均より高い人は、30%時点でも高い傾向。2つの時間帯の偏差が同じ方向に動く。
20%時点で高い人は、70%時点では低い傾向。前半と後半のバランスやタイミング差が関わる可能性がある。
04–05 / eigenfunction & score
主成分関数とscoreはセット。片方だけ見ると、パターンの意味か個人差のどちらかを失う。
φk(t) は、波形の変動を表す共通パターン。λk は、そのパターン方向の分散。PC2はPC1と直交する。
対象者 i の波形が、その差分パターンをどの方向に、どの程度持つかを表す数値。
φ と −φ は同じ軸。scoreも同時に反転する。符号そのものではなく、関数とscoreの組として解釈する。
gpt-image2による概念図。下の論文の値や、本文の例示値を描いたものではない。
scoreの典型的な大きさを仮に置いて、平均波形からどの時間帯が上がる/下がるかを見る。PC関数の上下だけでなく、元の波形スケールに戻して読む。
共通の「差の形」。例:立脚初期が高く、後半が低い。
各対象者がその差をどれだけ持つか。正負で方向も変わる。
少数のscoreから、元の波形をどの程度戻せるか。
06 / implementation
格子上のFPCAは、中心化した波形行列に対するPCAとして実装できる。基底ベースでは内積行列の扱いが加わる。
import numpy as np
# X.shape = (n_subjects, n_timepoints)
mean_wave = X.mean(axis=0)
X_centered = X - mean_wave
# 101点の共分散行列
C = np.cov(X_centered, rowvar=False)
# 対称行列なので eigh を使う
eigvals, eigvecs = np.linalg.eigh(C)
order = np.argsort(eigvals)[::-1]
eigvals = eigvals[order]
Phi = eigvecs[:, order[:3]]
# 各対象者のPC score
scores = X_centered @ Phi
# 3成分で再構成
X_reconstructed = mean_wave + scores @ Phi.T
X の行は対象者、列は時間。Phi の列がPC関数を離散化したもの。scores[i,k] が対象者 i のPCk scoreになる。
from skfda.representation.grid import FDataGrid
from skfda.preprocessing.dim_reduction import FPCA
fd = FDataGrid(data_matrix=X[..., None],
grid_points=np.linspace(0, 1, X.shape[1]))
fpca = FPCA(n_components=3)
scores = fpca.fit_transform(fd)B-splineなどが互いに直交しない場合、通常の行列PCAをそのまま当てず、基底の内積(Gram)行列を含めて解く。
07 / interpretation
スコア散布図だけを先に見ない。まず具体的な波形とPC関数を確認し、それから群や個人の位置、最後に少数成分で何が残ったかを読む。
gpt-image2で作成した説明用の概念図。7つのグラフ、波形、scoreは読み方を示す例であり、添付論文や実測データの結果ではない。
STEP 01 / RAW
図のここ:半透明の波形の束。
読む:外れ値、群ごとの高さ、ピークの位置ずれ、波形の欠けを確認する。ここを飛ばすと、外れ値や前処理の影響をPCの意味だと誤読しやすい。
STEP 02 / MEAN
図のここ:全波形を代表する太い線。
読む:典型的なピーク、谷、立ち上がりの時期を確認する。後で見る「平均 ± PC」は、この平均からどのように変形するかを示す。
STEP 03 / VARIANCE
図のここ:PC1 55%、PC2 25%、PC3 10%という例示バー。
読む:3成分で90%を要約できるという候補を作る。ただし90%は合格証ではなく、再構成誤差・安定性・解釈可能性を続けて確認する。
STEP 04 / PC1
図のここ:0ラインをまたぐPC1の曲線。
読む:どの時間帯が同じ向きに動き、どこで符号が反転するかを見る。PC関数は共通の「差の形」であり、一人の波形そのものではない。
STEP 05 / MEAN ± PC
図のここ:平均線と、平均 + PC/平均 − PCの2本。
読む:PC1の正負が、平均波形をどの時期に上げ下げするかを確認する。振幅差かピークのタイミング差かは、この変形図で判断する。
STEP 06 / SCORES
図のここ:PC1 score × PC2 scoreの散布図。
読む:点の分離は「差がありそう」という仮説。群差を述べるなら、効果量や区間、共変量を確認し、点がどのPC関数の形に対応するかへ戻る。
STEP 07 / RECONSTRUCTION
図のここ:Original waveformと、k = 3で再構成した曲線。
読む:大きなピークや谷が残り、細かなノイズだけが落ちているかを見る。再構成誤差が大きいなら、PC数や平滑化、basis設定を見直す。
「まず元波形と平均で土台を確認し、説明分散で候補を作り、PC関数と平均 ± PCで差の形を波形へ戻し、scoreで対象者を位置づけ、再構成で要約が十分か確かめる」——この順番なら、score plotの見た目だけで結論を出さずに済む。
CHAT / stumbling points
ここは元の講義で実際に出てきた質問と、それに対する返答を再構成した章。読み飛ばさず、疑問が生まれた順番のまま置いてある。
大学みたいに第1講から全10講義で、1つ終わるごとに区切って質問したい——という進め方を土台に、講義本文と寄り道Q&Aを一つのノートへ統合した。
A. その理解で合っている。どちらもデータ全体の変動を、少数の主な変化パターンに要約する。
ただし、PC1は「正常」「代表」「原因」ではない。集めたデータの中で最も大きい変動方向であり、PC2はPC1と異なる変動を次に大きく説明する方向。FPCAでは、その方向が波形 φk(t) として表れる。
A. かなり近い。身長と体重が一緒に増えるなら、点は右上がりに細長く並び、 [+,+] に近いPC方向が出る。逆に、身長が高いほど体重が軽いなら [+,-] に近くなる。
ただしPCAが直接最大化するのは相関ではなく、新しい軸へ投影した値の分散。共分散行列を使えば変動幅も効き、相関行列を使えば標準化後の「一緒に動く向き」に近くなる。FPCAでは、この考え方が時刻間の共分散へ移る。
A. 論文のイメージは、各strideを [x(0), x(1), …, x(100)] という101次元ベクトルにし、0%のEMG、1%のEMG、…、100%のEMGを軸として扱うこと。
ただし、FPCAだけが平均からの偏差を使うわけではない。標準的なPCAも通常は中心化する。違いの本質は、101個の離散変数として扱うか、時間連続の関数としてモデル化するか。また論文は XTX を使い、中心化の明記がないため、PP1は全体形状を含みうる。論文のPPを中心化FPCAの固有関数と同一視しない。
| 比較 | 論文のwaveform PCA | 講義のFPCA |
|---|---|---|
| 軸 | 101個の時刻 | 連続時間の関数 |
| 中心化 | 方法節で明記されない | 通常 xi(t)−μ(t) |
| 主成分 | principal pattern(PP) | 固有関数 φk(t) |
A. 理論上はほぼその通り。101点の普通のPCAは101次元だが、FPCAでは x(t) という関数全体をデータとみなすので、0.1%、37.264%のような全ての時点を考える無限次元空間になる。
実際の計算では、101点の格子で近似するか、B-splineなどの有限個のbasis係数へ落とす。だから「理論は無限次元、計算は有限次元」という二層で理解する。
A. 「サブグループ」ではなく、部品となる波形を係数つきで足し合わせること。被験者をクラスタに分け、その代表波形を混ぜるわけではない。
basisは波形を表現する部品、clusterは被験者を分けるグループ。FPCAは、basisで表現された波形の間にある主要な変動軸を探す。
A. basis-based FPCAならそうなる。各波形をbasisで表すと、平均波形は係数の平均で同じbasisを合成したもの。
そのため、平均からの偏差も係数の偏差に置き換えられる。
A. 横にずらして並べた、滑らかな小さな山。cubic B-splineなら角ばった三角形ではなく、隣の山と重なりながら局所的な盛り上がりを作る。
例えば立脚初期だけ盛り上がる、ピーク周辺だけ形を変える、遊脚期だけ活動が残る、といった局所的な変化に向いている。図の「knots」は山の配置場所と重なり方を決める点。
A. 似ているが重要な違いがある。Gaussianは理論上、裾がどこまでも続いて完全な0にはならない。一方、B-splineは担当区間の外では厳密に0になる。
この局所性と、隣り合うbasisの重なりが、滑らかさと局所的な表現力を両立させる。
A. 「固有関数がプラスだから必ず平均より高い」ではなく、scoreも正の対象者では、その時刻を平均より上へ動かす成分になるという意味。
φk(t) が正でも ξik が負なら、積は負。ピークが時間的にずれるだけでも、前の時刻では一方が高く、後の時刻では逆になるため、PC関数にピーク前+/ピーク後−の符号反転が現れる。
振幅差かtiming差かは、固有関数だけで断定せず、 μ(t)±aφ(t) を描いて平均波形がどう変形するかで確かめる。
A. 普通のPCAでは、PCベクトルは「データが最もよく散らばる方向を示す矢印」。点をその矢印へ投影した位置がPC score。
FPCAでは矢印が波形になり、PC関数は「どんな波形変化か」、PC scoreは「その人がその変化をどれくらい持つか」。
A. できる。ただしFPCAの元データ空間は波形空間なので、同じ2次元散布図をそのまま描くのではなく、役割を分ける。
このノートの「PCAからFPCAへ」図がその橋渡し。右側の波形は理解用の概念図であり、実データの推定グラフではない。
A. 基本的に群間比較するのは、共通のPC関数へ投影した各対象者のscore。PC関数は集団全体から得た「違いの物差し」なので、誰がその物差し上で離れているかをscoreで比較する。
ただしscore差だけでは意味が分からない。PC関数と平均±PCを見て、「どの時間帯の波形が、どちら向きに違うか」へ戻す。
A. そのまま引くのは危険。beforeとafterで別々にFPCAすると、PC1の向きや意味が変わる可能性がある。
前後を比較するなら全期間を使った共通のFPCA空間へ両方を投影するか、先に差分波形 Δxi(t)=after−before を作って、その変化波形へFPCAする。
A. 見た目の分離は仮説。統計的・臨床的な意味を保証しない。scoreを目的変数として適切なモデル、効果量、区間、共変量を検討する。
また、PC1は正常・最適・原因ではなく、そのデータで最も多い変動方向。scoreと歩行速度の相関も、それだけで因果関係を意味しない。FPCAはまずデータ構造を記述する方法である。
A. それだけでは決めない。scree plotと累積説明分散は候補を示す指標。再構成誤差、PCの安定性、解釈可能性、平滑化・basis数・外れ値への感度を合わせる。
固有値が近いとPCの順位や形が入れ替わりやすい。bootstrapは不確実性を調べるが、サンプル数や外部妥当性を増やすものではない。
A. できる。101点の波形を、例えば [ξ1,ξ2,ξ3] という低次元特徴量にして、波形タイプの探索へ使える。
ただし、クラスタ数・距離・標準化・再現性を検討し、各クラスタの平均波形へ戻って、「本当に違う波形タイプか」を確認する。FPCAはクラスタそのものではなく、クラスタリング前の冗長性を減らす表現でもある。
CHECK / four choices
前半は元のチャットで実際に立ち止まった疑問、後半はFPCAを深く理解しているかを確かめる問題。各問で一つ選び、「答えを確認」を押すと理由が表示される。
正解の記号を覚えるより、解説を読んで「元の波形では何が起きているか」まで言い直してみる。特にQ14〜Q20は、実装と研究解釈をつなぐ問題。
正解 0/20 · 回答済み 0/20どちらもデータ全体の変動を少数の軸へ圧縮する方法。ただしPC1は「正常」「代表」「原因」ではなく、集めたデータで最も分散が大きい方向。
BPCAが直接最大化するのは相関ではなく、軸へ投影した値の分散。共分散行列なら変数のスケールも含み、相関行列なら標準化後の一緒に動く向きに近づく。
C標準的なPCAも通常は中心化する。論文は各strideを101次元ベクトルとして扱う近縁のwaveform PCAで、方法節に中心化が明記されない点もFPCAと同一視しない理由になる。
B関数は連続時間の全体を持つため理論上は無限次元。実装では101点の離散近似、またはB-splineなどの有限個のbasisで表すので、理論と計算を二層で区別する。
Abasisは波形を表現する数学的な部品、clusterは被験者を分けるグループ。basis展開は xᵢ(t) ≈ Σ cᵢₘBₘ(t) のように、係数を変えて個々の波形を作る。
DGaussianは理論上0に到達せず、B-splineはcompact supportを持つ。局所的にだけ効くB-splineを少しずつ重ねることで、滑らかさと局所的な調整を両立できる。
C再構成は xᵢ(t) ≈ μ(t)+ξᵢₖφₖ(t)。φが正でもscoreが負なら積は負になるので、固有関数だけで「平均より高い」と断定しない。
B普通のPCAの矢印と投影位置の対応を、波形へ移したもの。PC関数が差の形を示し、scoreが個人をその方向へどれだけ投影したかを示す。
A全員のbasis係数を平均すれば、平均波形の係数になる。中心化した曲線も xᵢ(t)−μ(t)=Σ(cᵢₘ−c̄ₘ)Bₘ(t) と同じbasisで表せる。
CFPCAの元データ空間は波形空間なので、通常PCAの点の雲をそのまま置き換えるのではなく、平均波形、μ±aφ、対象者のscoreという役割で橋渡しする。
DC(s,t)は中心化した波形の偏差どうしの共変動。正なら同じ向き、負なら逆向きに動く傾向を表すが、時間的な因果関係ではない。
B固有値はその方向にどれだけデータが散らばるかを表す。大きいから臨床的に重要、正常、原因という意味ではなく、説明分散と解釈を組み合わせる。
Cξφの積が同じなら、φとscoreを同時に−1倍しても再構成は変わらない。群差を解釈するときは、ソフトウェア間の符号ではなく、実際のμ±aφとscoreの対応を見る。
Ascoreは、中心化した個人波形がPC関数方向へどれだけ投影されるかを示す内積。離散データでは時間間隔や数値積分の重みも考慮する。
D90%や95%は候補を作る目安であって、妥当性の保証ではない。固有値が近い場合の順位交換、LOOやbootstrap、再構成、感度分析、説明のしやすさを一緒に見る。
B別々に学習したPC軸は、向きや意味が変わりうるためscoreを直接比較できない。共通空間か差分波形を使えば、「同じ物差しで変化を測る」設計になる。
Cベクトルの内積では直交座標を前提にしやすいが、basis展開の係数空間では関数の内積がGで重みづけされる。これを無視すると直交性や分散の計算を誤る。
A時間点が多くても、同じ波形内の観測を独立な被験者として数えられない。nが小さければPCの形や群差の推定が不安定になりうる。
Dx̂ᵢ(t)=μ(t)+Σₖ₌₁ᴷξᵢₖφₖ(t)は、選んだK個の変動パターンで元波形を近似する式。再構成誤差を見れば、圧縮で何を捨てたか確認できる。
Bscoreは差の量を知らせるが、意味はφ(t)とμ(t)へ戻して読む。どの時期の振幅やタイミングが違うかを示し、研究デザインと交絡を踏まえて関連として解釈する。
C14問以上に正解し、Q14のscore式、Q15のPC数選択、Q16の前後比較、Q20の「scoreから波形へ戻る」流れを自分の言葉で説明できれば、FPCAの計算だけでなく解釈の骨格までつかめている。
09 / application
添付論文は、股関節OAの重症度による歩行中の股関節運動と殿筋活動の違いを、101点の歩行周期へ要約した例。
Rutherford, Moreside, Wong. “Hip joint motion and gluteal muscle activation differences between healthy controls and those with varying degrees of hip osteoarthritis during walking.” DOI 10.1016/j.jelekin.2015.10.010
自己選択速度のトレッドミル歩行を、各参加者3回・各20秒収録。片側あたり40歩行周期超を取得し、重症OA群ではトレッドミル歩行ができずEMG解析から3人が除外された。
表面EMGを2000 Hzで収録し、20–500 Hz bandpass、60 Hzと高調波のnotch、整流、6 Hz lowpassで包絡化。歩行周期を0–100%の101点へ時間正規化した。
| 項目 | 論文で行ったこと | 解釈上の意味 |
|---|---|---|
| EMG | 20–500 Hz bandpass、notch、整流、6 Hz lowpass | 歩行周期の活動包絡を比較 |
| 正規化 | 各歩行周期のpeak EMGで振幅正規化 | 絶対振幅ではなく相対的な時間パターン |
| 行列 | stride × 101 | 1周期を同じ長さにそろえた波形データ |
| PCA | [S] = [XT][X]、90%以上を説明するPPを保持 | 論文の主成分パターン(PP)で波形を要約 |
本文ではGMdとGMxについて、3つのPPで合計98%の変動を説明すると報告。
この論文は波形にPCAを適用した近縁例。方法節に中心化が明記されず、XTX を用いているため、本文の「中心化したFPCA」と完全に同じではない。
したがって、PP1を必ず「平均からの差」と読むのではなく、論文の定義どおり、全体形状を含みうる主パターンとして読む。
paper / measured values
平均(標準偏差)。GMd = gluteus medius anterior、GMx = gluteus maximus。
股関節の総可動域。重症OAほど小さく、3群間で差。
重症群で高い。本文ではGMd PP1で重症群と他2群の差を報告(p<0.001)。
論文では早期〜中期立脚の低下を捉えるパターンとして解釈。
| 指標 | Healthy | Moderate OA | Severe OA | 読み方 |
|---|---|---|---|---|
| 矢状面 total ROM | 48° (5) | 40° (7) | 24° (8) | 重症群で大きく低下。健康群と中等度群の差も報告。 |
| 前額面 total ROM | 11° (3) | 10° (3) | 6° (2) | 重症群で低下。 |
| 水平面 total ROM | 18° (4) | 16° (4) | 11° (4) | 重症群で低下。 |
| Walking speed | 1.51 (0.16) | 1.32 (0.22) | 1.11 (0.27) | 3群で異なる。 |
| Stride length | 1.48 (0.12) | 1.34 (0.16) | 1.16 (0.17) | 3群で異なる。 |
| 筋 / PP | Healthy | Moderate OA | Severe OA | 論文中の読み方 |
|---|---|---|---|---|
| GMx PP1 | 399.5 (84.0) | 395.0 (118.2) | 462.6 (68.5) | 全体の主パターン |
| GMx PP2 | −42.3 (63.1) | −33.7 (102.3) | 26.4 (90.2) | 重症群と健康/無症候群で差(p=0.042) |
| GMx PP3 | −10.6 (64.4) | −5.5 (66.6) | 31.5 (80.9) | 本文では群差の中心ではない |
| GMd PP1 | 410.6 (63.2) | 436.6 (69.5) | 521.2 (98.6) | 重症群と他2群で差(p<0.001) |
| GMd PP2 | 62.0 (49.6) | 30.7 (59.9) | −55.5 (106.9) | 重症群と他2群で差(p<0.001) |
| GMd PP3 | 3.2 (60.2) | −3.1 (58.4) | −4.0 (57.6) | 中期〜後期立脚の差を表す候補 |
言えること:重症OA群では、股関節ROMが小さく、GMd・GMxの時間パターン要約値に差がある。言えないこと:peak正規化されたEMGから、絶対的な筋活動量や股関節圧縮荷重を直接比較すること。
さらに、健康群の画像診断がないこと、OA群の反対側に無症候性OAがありうること、トレッドミルが計装されていないことも限界として残る。
08 / validity
「少ない成分で90%を説明できた」は圧縮の結果。研究として信じられるかは、安定性・再現性・解釈・感度を合わせて判断する。
gpt-image2による概念図。検証結果を自動的に保証するものではない。
保持成分で元の波形の重要な特徴が戻るか。全体平均の誤差だけでなく、ピークや時間帯も見る。
1人ずつ外しても、固有関数の形・説明分散・scoreの群差が大きく変わらないか。
再標本化でPCの形とscoreの区間を評価。ただしサンプル数や外部妥当性を増やすものではない。
平滑化、基底数、時間正規化、EMG前処理、外れ値処理を変えて結論が残るか。
λが近いとPCの順位や形が入れ替わりやすい。軸の順番だけで強い主張をしない。
説明分散 + 再構成 + stability + interpretability + sensitivity。どれか一つの指標で「正しい成分数」を決めない。
時間点が多いことは、独立な情報が多いことと同じではない。隣接時点は連続した波形として相関しているため、対象者数 n が小さいなら、PCの安定性と外部妥当性を慎重に見る。
歩行全周期を一度にFPCAすれば全体の連動を、立脚・遊脚など局面ごとに分ければ局所的な差を捉えやすい。どちらが正しいかは研究質問と時間正規化の前提で決める。
10 / research workflow
計算を始める前に研究質問を固定し、最後はscoreの差を元の波形の時間帯へ戻して説明する。
「どの波形の違いを知りたいか」「群差か、個人差か」を明確にする。
筋、周期、時間正規化、平滑化、振幅正規化、外れ値基準を記録する。
FPCAの前に、データの質と時間ずれを可視化する。
共分散、固有関数、固有値、scoreを計算する。
説明分散だけでなく、再構成・解釈・安定性で決める。
PC関数、平均±PC、元データへの重ね描きで意味を固定する。
共通のPC空間で群、前後、クラスタを比較。複数筋ならMFPCAも検討。
LOO、bootstrap、感度分析を経て、結果・限界・一般化可能性を記述する。
before/afterを別々にFPCAへ入れると軸が変わる可能性がある。比較には共通PC空間を使うか、同一対象の差分波形 Δxi(t)=after−before を定義する。
EMGをpeakで正規化した場合、絶対振幅の群差は消える。PCの意味は「相対的な時間パターン」に寄る。
対象者数、波形の定義、時間軸、中心化、平滑化/基底、共分散の定義、成分数の基準、scoreの推定法、検証法、符号合わせ、外れ値処理。
平均波形、説明分散、PC関数、平均±PC、scoreの分布、再構成誤差、安定性、元の時間帯へ戻した解釈。
「PC2 scoreが高い」をそのまま生理学的意味にしない。score差 → 波形変化 → 生理学的な仮説の順に戻して書く。相関は関連であり、PCが原因だとは言わない。
筋ごとに別のFPCAをすると軸も別々になる。複数筋を一緒に扱うなら、各筋の波形構造を統合するMFPCAを検討し、どの筋・時間帯に寄与があるかを元波形で確認する。
END / takeaways
FPCAは、次元削減のテクニックであると同時に、波形の変動を説明する言語でもある。
01
平均波形そのものではない。時間軸上の「違い方」を表す。
02
PC関数で表される差を、その対象者がどれほど持つか。
03
固有関数とscoreは同時に反転できる。組で読む。
04
再構成、LOO、bootstrap、感度、解釈可能性を確認する。
波形を、平均と少数の「違いの形」と、その人ごとのscoreへ分解する。だから、101点の波形を少数の数値で比較しながら、最後は元の時間軸へ戻って説明できる。