φFunctional PCA / 講義ノート
CHAPTER 01 + 02 · waveform → joint pattern

Functional data analysis / visual lecture note

波形を、
少数の差分パターンで読む。

Functional PCA(FPCA)は、時間に沿って並ぶ101点を別々の変数として眺めるだけでなく、一つの波形として扱い、波形同士の違いを少数の主成分関数へ圧縮する。

intuitionequationsimplementationvaliditygait EMG

SOURCE NOTE 参照講義「functional PCA講義」と添付PDFをもとに再構成。下の6図はgpt-image2で生成した概念図で、測定値そのものではありません。

添付PDFを開く

00 / orientation

この講義の地図

直感から数式へ、数式から実装へ、最後に「その結果を信じてよいか」まで進む。迷ったら、いつでも3行の定義へ戻る。

01 / big picture

PCAからFPCAへ

普通のPCAの「矢印」を、波形の時間軸へ戻して考える。両者の中心化は同じで、違いはデータをベクトルとして扱うか、関数として扱うかにある。

通常のPCAとFPCAを、点の雲と波形の図で対比した概念図
図解 / PCA → FPCA 左では主成分がデータ空間の矢印、右では主成分関数が波形の差分パターンになる。

gpt-image2による概念図。説明用のイラストであり、特定データの推定結果ではない。

一言でいうと

FPCAは、波形の変動を「共通の形」×「個人ごとの量」に分ける。

xi(t) = μ(t) + ξi1φ1(t) + ξi2φ2(t) + …

平均波形 μ(t) に、主成分関数 φk(t) を、対象者ごとのスコア ξik だけ足し引きする。

中心化について

普通のPCAもFPCAも通常は平均を引いてから変動を分析する。「普通のPCAは生データ、FPCAは平均との差」という区別ではない。

同じ考え方を、データの姿に合わせて言い換える
観点普通のPCAFPCA
入力p個の変数を持つベクトル時間 t に沿った波形 xi(t)
主成分主成分ベクトル vk主成分関数・固有関数 φk(t)
scorexiTvk∫[xi(t)−μ(t)]φk(t)dt
読み方変数の組み合わせ方向波形がどの時間帯で、どう違うか

02 / representation

波形を「関数」として見る

101点は計算上の格子。FPCAが見たいのは点の列そのものではなく、その背後にある時間連続の変動である。

離散化は、地図の解像度

歩行1周期を0–100%に正規化し、101点で記録しても、1人のデータは「101個の無関係な測定値」ではない。隣り合う時点は連続した波形としてつながっている。

xi(t) ≈ Σm cimBm(t)

基底展開では、波形をB-splineやFourierなどの基底関数の組み合わせで近似する。基底展開とFPCAは別の処理であり、前者は表現、後者は変動の要約。

共分散は「時間×時間」の地図

赤は一緒に上がる時間帯、緑は一方が上がると他方が下がる時間帯。対角線はその時点の分散を表す。

0123456 0+++·−−− 1++++·−− 2+++++·− 3·+++++· 4−·+++++ 5−−·++++ 6−−−·+++
同方向小さい逆方向
01波形xi(t)
02平均μ(t) を計算
03中心化xi−μ
04共分散C(s,t)
05固有関数φk(t)
06scoreξik
07再構成少数のscoreへ

02+ / basis intuition

B-splineを、目で理解する

チャットで最もつまずきやすかった「basisって何?」「Gaussianのように無限に続く?」「サブグループ波形?」を、部品・局所性・係数の3段階でほどく。

B-splineの局所的な滑らかな基底関数、ノット、係数、重み付き和、Gaussianとの違いを示す概念図
図解 / B-spline assembly 小さな滑らかな山を局所的に重ね、係数で重みづけすると、1本の滑らかな波形になる。

gpt-image2による教育用概念図。図中の曲線・係数は仕組みを示す模式表現で、測定データではない。

まずは「波形を作る部品」

basis functionは、被験者を分けたサブグループの代表波形ではない。1本の波形を表現するための、再利用できる部品となる曲線である。

xi(t) = ci1B1(t) + ci2B2(t) + … + ciMBM(t)

係数 cim は「被験者 i の波形を作るために、部品 Bm をどれくらい使うか」。

局所性 = その区間だけ効く

下の小山はそれぞれの担当範囲を持ち、範囲外では厳密に0になる。

0%50%100%
B1B2B3B4
01 / BASIS

滑らかな小山

cubic B-splineなら、角ばった三角形ではなく、隣と重なりながら滑らかな曲線になる。

02 / SUPPORT

局所的にだけ非ゼロ

立脚初期だけ、ピーク付近だけ、という局所変化を表現しやすい。範囲外は完全に0。

03 / KNOTS

配置を決める点

ノットは小山の区切りや重なり方を決める軸上の点。基底の形と局所範囲を左右する。

04 / WEIGHT

係数で強さを変える

各部品に係数を掛けて足す。係数が大きい区間ほど、完成波形に強く表れる。

Gaussianとの違い

「端が降りても無限に続くガウス関数みたいなもの?」への答えは、似ているが違う。

Gaussian:裾が理論上ずっと続く
B-spline:担当区間の外では厳密に0

B-splineの小山が横一列に少しずつ重なるから、全体として滑らかな波形を作れる。

平均波形もbasisで表せる

μ(t) = Σm c̄mBm(t)

各被験者の係数を平均すれば、平均波形の係数になります。さらに、

xi(t)−μ(t) = Σm(cim−c̄m)Bm(t)

つまりbasis-based FPCAは、係数の平均からのズレを材料に、主要な波形差を探すとも言える。

混同しやすい3つを分ける
もの役割たとえるなら
basis function1本の波形を作る部品小さな曲線パーツ
FPCA被験者間の主要な波形差を探す変動の軸を見つける分析
cluster被験者を波形タイプごとに分ける似た人を同じグループにする処理

basis展開をしたら、そのまま普通のPCA?

必ずしもそうではない。B-spline basis同士は一般に直交しないため、本格的なbasis FPCAでは、

Gjk = ∫ Bj(t)Bk(t)dt

というGram行列を考慮する。格子上の101点が揃っているならgrid-based FPCAで十分な場合もあるが、ノイズ・不均一な時刻・欠測があるとbasis表現が有用になる。

03 / covariance

共分散関数を読む

「時間sのズレ」と「時間tのズレ」が、対象者間で同じ方向に出るか、逆方向に出るかを集約したもの。

mean function

μ(t) = 1/N Σi xi(t)

時間ごとの平均をつないだもの。まずは「典型的な波形」を置く。

covariance function

C(s,t) = 1/(N−1) Σi[xi(s)−μ(s)][xi(t)−μ(t)]

2つの時点のズレの連動。C(t,t) はその時点の分散。

sampled matrix

C ≈ 1/(N−1) XcTXc

101点にサンプリングすれば、連続関数の共分散を行列として近似できる。

共分散から固有関数へ

共分散関数は「どの時間帯同士が一緒に動くか」の材料。そこから、変動を最もよく説明する波形パターン φ1(t), φ2(t), … を取り出す。

正の共分散

C(20%, 30%) > 0

20%時点で平均より高い人は、30%時点でも高い傾向。2つの時間帯の偏差が同じ方向に動く。

負の共分散

C(20%, 70%) < 0

20%時点で高い人は、70%時点では低い傾向。前半と後半のバランスやタイミング差が関わる可能性がある。

04–05 / eigenfunction & score

「何が違うか」と「誰がどれくらいか」

主成分関数とscoreはセット。片方だけ見ると、パターンの意味か個人差のどちらかを失う。

固有方程式

∫ C(s,t)φk(s) ds = λkφk(t)

φk(t) は、波形の変動を表す共通パターン。λk は、そのパターン方向の分散。PC2はPC1と直交する。

score

ξik = ∫ [xi(t)−μ(t)]φk(t)dt

対象者 i の波形が、その差分パターンをどの方向に、どの程度持つかを表す数値。

符号は反転しても同じ

φ と −φ は同じ軸。scoreも同時に反転する。符号そのものではなく、関数とscoreの組として解釈する。

説明分散、平均波形とプラスマイナスの主成分、スコアを並べた概念図
図解 / 結果の読み方 説明分散 → 平均±PC → scoreの順で、パターンと対象者差をつなげる。

gpt-image2による概念図。下の論文の値や、本文の例示値を描いたものではない。

平均 ± PCで、波形の意味を目で確かめる

μ(t) ± 2√λkφk(t)

scoreの典型的な大きさを仮に置いて、平均波形からどの時間帯が上がる/下がるかを見る。PC関数の上下だけでなく、元の波形スケールに戻して読む。

PC function
difference type

共通の「差の形」。例:立脚初期が高く、後半が低い。

PC score
amount / direction

各対象者がその差をどれだけ持つか。正負で方向も変わる。

reconstruction
μ + score × PC

少数のscoreから、元の波形をどの程度戻せるか。

06 / implementation

101点のデータをPythonで計算する

格子上のFPCAは、中心化した波形行列に対するPCAとして実装できる。基底ベースでは内積行列の扱いが加わる。

grid-based FPCA / NumPyX = subjects × time
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になる。

scikit-fdaならどう書く?
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関数を確認し、それから群や個人の位置、最後に少数成分で何が残ったかを読む。

FPCAの結果を、元波形、平均波形、説明分散、PC1関数、平均プラスマイナスPC、score散布図、再構成の7段階で読む順番を示した概念図
図解 / FPCA results walkthrough 上段左から右へ、次に下段左から右へ進む。各パネルの役割を確認してから、次のグラフへ移る。

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

PC関数を言葉にする

図のここ: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を一つのノートへ統合した。

QPCAもFPCAも、データ全体の特徴や個人差パターンをいくつか拾って、どんな変動の仕方があるかを見るもの?

A. その理解で合っている。どちらもデータ全体の変動を、少数の主な変化パターンに要約する。

ただし、PC1は「正常」「代表」「原因」ではない。集めたデータの中で最も大きい変動方向であり、PC2はPC1と異なる変動を次に大きく説明する方向。FPCAでは、その方向が波形 φk(t) として表れる。

Q「最もよく散らばっている方向」は、結局相関方向? 変化の仕方が変数間で近い方向?

A. かなり近い。身長と体重が一緒に増えるなら、点は右上がりに細長く並び、 [+,+] に近いPC方向が出る。逆に、身長が高いほど体重が軽いなら [+,-] に近くなる。

ただしPCAが直接最大化するのは相関ではなく、新しい軸へ投影した値の分散。共分散行列を使えば変動幅も効き、相関行列を使えば標準化後の「一緒に動く向き」に近くなる。FPCAでは、この考え方が時刻間の共分散へ移る。

PC方向 = 一緒に増える/減る/逆方向に動く変数を組み合わせ、投影分散が最大になる方向
Q添付論文のPCAは各時刻のxで軸を作り、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)
QFPCAは「軸」が無限ということ?

A. 理論上はほぼその通り。101点の普通のPCAは101次元だが、FPCAでは x(t) という関数全体をデータとみなすので、0.1%、37.264%のような全ての時点を考える無限次元空間になる。

実際の計算では、101点の格子で近似するか、B-splineなどの有限個のbasis係数へ落とす。だから「理論は無限次元、計算は有限次元」という二層で理解する。

Qbasis版は、波形をいくつかのサブグループ波形に分けて足し合わせること?

A. 「サブグループ」ではなく、部品となる波形を係数つきで足し合わせること。被験者をクラスタに分け、その代表波形を混ぜるわけではない。

xi(t) = ci1B1(t) + ci2B2(t) + …

basisは波形を表現する部品、clusterは被験者を分けるグループ。FPCAは、basisで表現された波形の間にある主要な変動軸を探す。

Q平均波形もbasis波形で合成した形になるの?

A. basis-based FPCAならそうなる。各波形をbasisで表すと、平均波形は係数の平均で同じbasisを合成したもの。

μ(t) = Σm c̄mBm(t)

そのため、平均からの偏差も係数の偏差に置き換えられる。

xi(t)−μ(t) = Σm(cim−c̄m)Bm(t)
QB-splineってどんな波形なの?

A. 横にずらして並べた、滑らかな小さな山。cubic B-splineなら角ばった三角形ではなく、隣の山と重なりながら局所的な盛り上がりを作る。

例えば立脚初期だけ盛り上がる、ピーク周辺だけ形を変える、遊脚期だけ活動が残る、といった局所的な変化に向いている。図の「knots」は山の配置場所と重なり方を決める点。

B-spline = 横にずらして並べる、局所的に効く滑らかな小山
Q端っこが降りても無限に続くGaussian関数みたいなもの?

A. 似ているが重要な違いがある。Gaussianは理論上、裾がどこまでも続いて完全な0にはならない。一方、B-splineは担当区間の外では厳密に0になる。

Gaussian:無限の裾 / B-spline:compact support(区間外は0)

この局所性と、隣り合うbasisの重なりが、滑らかさと局所的な表現力を両立させる。

Q固有関数がプラスなら、平均からの差がプラスに大きくなりやすい? ピークのズレでtごとの増え方が変わる?

A. 「固有関数がプラスだから必ず平均より高い」ではなく、scoreも正の対象者では、その時刻を平均より上へ動かす成分になるという意味。

xi(t) ≈ μ(t) + ξikφk(t)

φk(t) が正でも ξik が負なら、積は負。ピークが時間的にずれるだけでも、前の時刻では一方が高く、後の時刻では逆になるため、PC関数にピーク前+/ピーク後−の符号反転が現れる。

振幅差かtiming差かは、固有関数だけで断定せず、 μ(t)±aφ(t) を描いて平均波形がどう変形するかで確かめる。

Q被験者の違いはscoreに出る。PC関数とPCベクトルを大学1年生向けに言うと?

A. 普通のPCAでは、PCベクトルは「データが最もよく散らばる方向を示す矢印」。点をその矢印へ投影した位置がPC score。

FPCAでは矢印が波形になり、PC関数は「どんな波形変化か」、PC scoreは「その人がその変化をどれくらい持つか」。

PCベクトル = データの違い方を示す矢印
PC関数 = その矢印を波形にしたもの
PC score = その人が矢印のどこにいるか
Q通常PCAの散布図・投影と同じように、FPCA版も並べて図解できる?

A. できる。ただしFPCAの元データ空間は波形空間なので、同じ2次元散布図をそのまま描くのではなく、役割を分ける。

  • 通常PCA:点の雲、PCベクトル、軸への投影、score。
  • FPCA:平均波形、PC関数、 μ±aφ の波形変形、対象者のscore plot。

このノートの「PCAからFPCAへ」図がその橋渡し。右側の波形は理解用の概念図であり、実データの推定グラフではない。

Q群間比較ではPC関数とscoreのどちらを見る?

A. 基本的に群間比較するのは、共通のPC関数へ投影した各対象者のscore。PC関数は集団全体から得た「違いの物差し」なので、誰がその物差し上で離れているかをscoreで比較する。

ただしscore差だけでは意味が分からない。PC関数と平均±PCを見て、「どの時間帯の波形が、どちら向きに違うか」へ戻す。

Qbefore/afterを別々にFPCAして、afterのscoreからbeforeのscoreを引けばいい?

A. そのまま引くのは危険。beforeとafterで別々にFPCAすると、PC1の向きや意味が変わる可能性がある。

前後を比較するなら全期間を使った共通のFPCA空間へ両方を投影するか、先に差分波形 Δxi(t)=after−before を作って、その変化波形へFPCAする。

Qscore plotで群が分かれて見えたら、群差があると言っていい? PC1は正常パターン?

A. 見た目の分離は仮説。統計的・臨床的な意味を保証しない。scoreを目的変数として適切なモデル、効果量、区間、共変量を検討する。

また、PC1は正常・最適・原因ではなく、そのデータで最も多い変動方向。scoreと歩行速度の相関も、それだけで因果関係を意味しない。FPCAはまずデータ構造を記述する方法である。

Q説明分散が85%/90%なら、残すPC数はそれで決定?

A. それだけでは決めない。scree plotと累積説明分散は候補を示す指標。再構成誤差、PCの安定性、解釈可能性、平滑化・basis数・外れ値への感度を合わせる。

固有値が近いとPCの順位や形が入れ替わりやすい。bootstrapは不確実性を調べるが、サンプル数や外部妥当性を増やすものではない。

Qscoreを使えば、その後にクラスタリングできる?

A. できる。101点の波形を、例えば [ξ1,ξ2,ξ3] という低次元特徴量にして、波形タイプの探索へ使える。

ただし、クラスタ数・距離・標準化・再現性を検討し、各クラスタの平均波形へ戻って、「本当に違う波形タイプか」を確認する。FPCAはクラスタそのものではなく、クラスタリング前の冗長性を減らす表現でもある。

CHECK / four choices

4択で、理解を確かめる

前半は元のチャットで実際に立ち止まった疑問、後半はFPCAを深く理解しているかを確かめる問題。各問で一つ選び、「答えを確認」を押すと理由が表示される。

使い方

正解の記号を覚えるより、解説を読んで「元の波形では何が起きているか」まで言い直してみる。特にQ14〜Q20は、実装と研究解釈をつなぐ問題。

正解 0/32 · 回答済み 0/32

Q01 / CHAT → 共通の目的

PCAもFPCAも、最も基本的には何をしている?
未回答

Q02 / CHAT → 最も散らばる方向

「最もよく散らばっている方向」は、PCAではどのように決まる?
未回答

Q03 / CHAT → 論文のPCAとの違い

添付論文のstride×101点のPCAと、講義で扱うFPCAの違いとして最も適切なのは?
未回答

Q04 / CHAT → 無限の軸

「FPCAでは軸が無限」という説明を、最も正確に言い直したものは?
未回答

Q05 / CHAT → basisとサブグループ

「basis版では波形をサブグループ波形に分けて足す」という理解を修正すると?
未回答

Q06 / CHAT → B-splineとGaussian

B-splineとGaussian関数の「端っこ」の違いは?
未回答

Q07 / CHAT → 固有関数の符号

ある時刻で固有関数 φₖ(t) がプラスなら、何を意味する?
未回答

Q08 / CHAT → PC関数とscore

PC関数と、被験者ごとのscoreの役割分担は?
未回答

Q09 / CHAT → 平均波形とbasis

平均波形 μ(t) もB-spline basisで表せる?
未回答

Q10 / CHAT → PCAとFPCAの図解

通常PCAとFPCAを並べて図解するとき、最も適切な対応は?
未回答

Q11 / DEEP → 共分散関数

共分散関数 C(s,t) が正で大きいとき、最も近い説明は?
未回答

Q12 / DEEP → 固有値

FPCAの固有値 λₖ は、主に何を表す?
未回答

Q13 / DEEP → 符号反転

PC関数の符号が解析ごとに反転していたとき、どう考える?
未回答

Q14 / DEEP → scoreの計算

中心化した波形からPC score ξᵢₖを求める式として正しいものは?
未回答

Q15 / DEEP → PC数の選択

保持するPC数Kを決めるとき、最も妥当な考え方は?
未回答

Q16 / DEEP → before / after

beforeとafterの波形変化をFPCAで見るとき、最も安全な方法は?
未回答

Q17 / DEEP → basis FPCAの内積

B-spline basisを使ったFPCAで、Gram行列Gが登場する理由は?
未回答

Q18 / DEEP → 101点と標本数

歩行周期を101点にそろえたとき、統計的な注意点は?
未回答

Q19 / DEEP → 再構成

少数のPCで再構成した波形 x̂ᵢ(t) の意味は?
未回答

Q20 / DEEP → 研究解釈

ある群でPC1 scoreが高かったとき、FPCAとして次に行うべき説明は?
未回答

理解の目安

第1章のQ01〜Q20で14問以上に正解し、Q14のscore式、Q15のPC数選択、Q16の前後比較、Q20の「scoreから波形へ戻る」流れを自分の言葉で説明できれば、FPCAの計算だけでなく解釈の骨格までつかめている。

09 / application

歩行EMGの応用例で読む

添付論文は、股関節OAの重症度による歩行中の股関節運動と殿筋活動の違いを、101点の歩行周期へ要約した例。

論文カード

Journal of Electromyography and Kinesiology 25 (2015) 944–950

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

healthy n=20moderate OA n=20severe OA n=20 recruitedsevere EMG n=17 in some analysesgait cycle 0–100% / 101 points

収録デザイン

自己選択速度のトレッドミル歩行を、各参加者3回・各20秒収録。片側あたり40歩行周期超を取得し、重症OA群ではトレッドミル歩行ができずEMG解析から3人が除外された。

EMGを波形へ

表面EMGを2000 Hzで収録し、20–500 Hz bandpass、60 Hzと高調波のnotch、整流、6 Hz lowpassで包絡化。歩行周期を0–100%の101点へ時間正規化した。

解析の設計
項目論文で行ったこと解釈上の意味
EMG20–500 Hz bandpass、notch、整流、6 Hz lowpass歩行周期の活動包絡を比較
正規化各歩行周期のpeak EMGで振幅正規化絶対振幅ではなく相対的な時間パターン
行列stride × 1011周期を同じ長さにそろえた波形データ
PCA[S] = [XT][X]、90%以上を説明するPPを保持論文の主成分パターン(PP)で波形を要約

本文ではGMdとGMxについて、3つのPPで合計98%の変動を説明すると報告。

FPCAとの対応に注意

この論文は波形にPCAを適用した近縁例。方法節に中心化が明記されず、XTX を用いているため、本文の「中心化したFPCA」と完全に同じではない。

したがって、PP1を必ず「平均からの差」と読むのではなく、論文の定義どおり、全体形状を含みうる主パターンとして読む。

paper / measured values

論文の結果を、数値で確認する

平均(標準偏差)。GMd = gluteus medius anterior、GMx = gluteus maximus。

矢状面ROM

48°Healthy
40°Moderate
24°Severe

股関節の総可動域。重症OAほど小さく、3群間で差。

GMd / PP1

410.6Healthy
436.6Moderate
521.2Severe

重症群で高い。本文ではGMd PP1で重症群と他2群の差を報告(p<0.001)。

GMd / PP2

62.0Healthy
30.7Moderate
−55.5Severe

論文では早期〜中期立脚の低下を捉えるパターンとして解釈。

Table 2の歩行・股関節運動(平均(SD))
指標HealthyModerate OASevere OA読み方
矢状面 total ROM48° (5)40° (7)24° (8)重症群で大きく低下。健康群と中等度群の差も報告。
前額面 total ROM11° (3)10° (3)6° (2)重症群で低下。
水平面 total ROM18° (4)16° (4)11° (4)重症群で低下。
Walking speed1.51 (0.16)1.32 (0.22)1.11 (0.27)3群で異なる。
Stride length1.48 (0.12)1.34 (0.16)1.16 (0.17)3群で異なる。
Table 3のPP score(平均(SD))
筋 / PPHealthyModerate OASevere OA論文中の読み方
GMx PP1399.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 PP1410.6 (63.2)436.6 (69.5)521.2 (98.6)重症群と他2群で差(p<0.001)
GMd PP262.0 (49.6)30.7 (59.9)−55.5 (106.9)重症群と他2群で差(p<0.001)
GMd PP33.2 (60.2)−3.1 (58.4)−4.0 (57.6)中期〜後期立脚の差を表す候補

この結果から言えること/言えないこと

言えること:重症OA群では、股関節ROMが小さく、GMd・GMxの時間パターン要約値に差がある。言えないこと:peak正規化されたEMGから、絶対的な筋活動量や股関節圧縮荷重を直接比較すること。

さらに、健康群の画像診断がないこと、OA群の反対側に無症候性OAがありうること、トレッドミルが計装されていないことも限界として残る。

08 / validity

説明分散の先へ:妥当性を評価する

「少ない成分で90%を説明できた」は圧縮の結果。研究として信じられるかは、安定性・再現性・解釈・感度を合わせて判断する。

FPCAの適合後にleave-one-out、bootstrap、sensitivityを比較し、安定性を判断するフロー図
図解 / 妥当性評価のループ fit → 複数の検証 → 比較 → 安定なら解釈、揺れるなら分析条件を見直す。

gpt-image2による概念図。検証結果を自動的に保証するものではない。

  • 01
    再構成誤差

    保持成分で元の波形の重要な特徴が戻るか。全体平均の誤差だけでなく、ピークや時間帯も見る。

  • 02
    Leave-one-out

    1人ずつ外しても、固有関数の形・説明分散・scoreの群差が大きく変わらないか。

  • 03
    Bootstrap

    再標本化でPCの形とscoreの区間を評価。ただしサンプル数や外部妥当性を増やすものではない。

  • 04
    感度分析

    平滑化、基底数、時間正規化、EMG前処理、外れ値処理を変えて結論が残るか。

  • 05
    固有値の近さ

    λが近いとPCの順位や形が入れ替わりやすい。軸の順番だけで強い主張をしない。

妥当性の最小セット

説明分散 + 再構成 + stability + interpretability + sensitivity。どれか一つの指標で「正しい成分数」を決めない。

101点あっても、情報量が101人分ではない

時間点が多いことは、独立な情報が多いことと同じではない。隣接時点は連続した波形として相関しているため、対象者数 n が小さいなら、PCの安定性と外部妥当性を慎重に見る。

時間全体か、局面ごとか

歩行全周期を一度にFPCAすれば全体の連動を、立脚・遊脚など局面ごとに分ければ局所的な差を捉えやすい。どちらが正しいかは研究質問と時間正規化の前提で決める。

10 / research workflow

研究で使う完全ワークフロー

計算を始める前に研究質問を固定し、最後はscoreの差を元の波形の時間帯へ戻して説明する。

  1. 研究質問を決める

    「どの波形の違いを知りたいか」「群差か、個人差か」を明確にする。

  2. 入力と前処理を定義する

    筋、周期、時間正規化、平滑化、振幅正規化、外れ値基準を記録する。

  3. 生波形・平均・群別を点検する

    FPCAの前に、データの質と時間ずれを可視化する。

  4. 中心化してFPCAを適合する

    共分散、固有関数、固有値、scoreを計算する。

  5. 成分数を選ぶ

    説明分散だけでなく、再構成・解釈・安定性で決める。

  6. PCを言葉と波形で解釈する

    PC関数、平均±PC、元データへの重ね描きで意味を固定する。

  7. scoreを比較する

    共通のPC空間で群、前後、クラスタを比較。複数筋ならMFPCAも検討。

  8. 検証して、元の波形へ戻る

    LOO、bootstrap、感度分析を経て、結果・限界・一般化可能性を記述する。

歩行研究で特に注意

before/afterを別々にFPCAへ入れると軸が変わる可能性がある。比較には共通PC空間を使うか、同一対象の差分波形 Δxi(t)=after−before を定義する。

EMGをpeakで正規化した場合、絶対振幅の群差は消える。PCの意味は「相対的な時間パターン」に寄る。

Methodsに残すもの

対象者数、波形の定義、時間軸、中心化、平滑化/基底、共分散の定義、成分数の基準、scoreの推定法、検証法、符号合わせ、外れ値処理。

Resultsに残すもの

平均波形、説明分散、PC関数、平均±PC、scoreの分布、再構成誤差、安定性、元の時間帯へ戻した解釈。

Discussionで翻訳するもの

「PC2 scoreが高い」をそのまま生理学的意味にしない。score差 → 波形変化 → 生理学的な仮説の順に戻して書く。相関は関連であり、PCが原因だとは言わない。

複数筋ならMFPCA

筋ごとに別のFPCAをすると軸も別々になる。複数筋を一緒に扱うなら、各筋の波形構造を統合するMFPCAを検討し、どの筋・時間帯に寄与があるかを元波形で確認する。

CH01 / takeaways

第1章の持ち帰る5つのルール

FPCAは、次元削減のテクニックであると同時に、波形の変動を説明する言語でもある。

01

PC関数は差の形

平均波形そのものではない。時間軸上の「違い方」を表す。

02

scoreは人の量

PC関数で表される差を、その対象者がどれほど持つか。

03

符号を単独で読まない

固有関数とscoreは同時に反転できる。組で読む。

04

90%で終わらない

再構成、LOO、bootstrap、感度、解釈可能性を確認する。

最終式

xi(t) ≈ μ(t) + Σk=1K ξikφk(t)

波形を、平均と少数の「違いの形」と、その人ごとのscoreへ分解する。だから、101点の波形を少数の数値で比較しながら、最後は元の時間軸へ戻って説明できる。

CHAPTER 02 / MFPCA

02 / multi-waveform

複数の波形が、一緒に違う

ここからは、Gmed・Gmaxのような複数筋を一つの分析空間へ置く。単独の筋の個人差ではなく、筋どうしがどんな組み合わせで変わるかを読む。

MFPCA(Multivariate Functional PCA)は、複数の関数をまとめた ベクトル値関数 にFPCAを行う方法。2筋なら「筋 × 時間」の空間に、1人のタスクを1点として置き、共同変動の軸を探す。

muscle × time cross-covariance joint PC function one score / subject

02.01 / core picture

1人のタスクを、
「筋 × 時間」の1点にする

1筋のFPCAで波形を1本の関数として見た。その関数が複数本になったら、同じ時刻の並びをまとめて一つのベクトル値関数として扱う。

GmedとGmaxの波形を202次元の筋と時間の点へまとめ、ブロック共分散と共同PCへ進むMFPCAの概念図
図解 / MFPCAの全体像 複数の波形を連結し、筋間の共分散も含めて、共同のPC方向と1人1つのscoreへ要約する。

gpt-image2による教育用概念図。曲線、点、共分散ブロックは仕組みを示す模式表現で、測定値そのものではない。

2筋 × 101時点 = 202次元

被験者 i の1タスクは、次のような一つのベクトルになる。

zi = [Gmed(t1), …, Gmed(t101), Gmax(t1), …, Gmax(t101)]T ∈ ℝ202

視覚化しにくいが、これは「Gmedがこの形で、かつGmaxがこの形」という組み合わせ全体を表す1点。

「無限次元が1軸になる」ではない

1筋なら関数空間、2筋ならその直積空間。MFPCAは無限次元の概念を消すのではなく、複数の関数を束ねた 一つのベクトル値関数 として主成分方向を探す。

FPCAとMFPCAの対応
見ているもの1筋のFPCA複数筋のMFPCA
1人の表現1本の波形 xi(t)複数波形の組 xi(t) = [xi,Gmed(t), xi,Gmax(t)]T
共分散時間 × 時間 C(s,t)(筋 × 時間) × (筋 × 時間)
PCの形1本の固有関数 φk(t)筋ごとの関数を束ねた φ⃗k(t)
score1人 × 1筋 × PC1人 × 複数筋 × 共同PC
新しく入る情報筋の中の時間パターン筋間の共同変動(cross-covariance)

02.02 / covariance

共分散行列の「各セル」が、
時間 × 時間の小行列になる

MFPCAの核心は、筋の中だけでなく、筋と筋のあいだの共変動を同じ共分散構造へ入れること。

2筋のブロック共分散

各ブロックは101×101。全体は202×202の共分散行列になる。

筋内 covariance筋間 cross-covariance

cross-covarianceは何を聞くか

CGmed,Gmax(s,t) = Cov[Gmed(s), Gmax(t)]

「人によって、Gmedの時刻 s の偏差が大きいとき、Gmaxの時刻 t の偏差も大きい/小さい傾向があるか?」を聞く。

正なら同じ向き、負なら逆向きの 被験者間の共同変動。1人の中で先に起きた筋が後の筋を引き起こす、という因果や時間同期ではない。

2筋で終わらない

p筋なら、筋ペアごとに p2 個の共分散面がある。ただし対称性 Cab(s,t)=Cba(t,s) がある。

だから、MFPCAは「筋ごとの結果を並べる」だけではなく、すべてのブロックを含む一つの共分散構造から共同軸を作る。

02.03 / joint direction

一つの共同方向を、
筋ごとの曲線に分けて表示する

数学的には一つの固有方向。解釈するときはGmed部分、Gmax部分という複数の曲線をセットで読む。

共同PC関数

φ⃗1(t) = [φGmed,1(t), φGmax,1(t)]T

Gmedでは立脚初期が+、Gmaxでは立脚後期が−、のように、複数筋の波形の組み合わせを一つの変動パターンとして表す。

一人のscore

ξi1 = ∑m ∫[xim(t)−μm(t)]φm,1(t)dt

各筋の寄与を足し合わせて、共同パターンへの投影量を1つの数値にする。高い/低いは、そのパターンの向きとセットで読む。

2つのPC1を後から足すのではない

GmedのPC1とGmaxのPC1を別々に計算して、単純に「MFPCAのPC1」と呼ぶわけではない。共同空間で一つの固有方向を求め、その方向を筋ごとの成分へ分解して表示する。

scoreの符号と波形の読み方

ξi1 > 0 なら、平均から見て φ⃗1 の向きに近い。負なら反対向き。

ただし φ⃗1 と −φ⃗1 は同じPCで、scoreも同時に反転する。符号ではなく、平均±PCで実際の波形変化へ戻る。

x⃗i(t) ≈ μ⃗(t) + ξi1φ⃗1(t) + ξi2φ⃗2(t) + …

共同PC1の日本語訳

Gmedの立脚初期活動が平均より高い人ほど、Gmaxの立脚後期活動は平均より低い傾向がある。

これは「この集団で観察された共同変動」の翻訳。筋間の因果や神経学的シナジーの証明ではない。

02.04 / implementation

2段階法で、
「筋ごとの表現」から共同軸へ

実装の考え方は、各筋の波形をまず十分な数のFPCA scoreへ写し、そのscore群を共通の空間で統合すること。第2段階の重みづけを明示する。

mfpca_two_stage.pyconceptual skeleton
import numpy as np
from sklearn.decomposition import PCA
from skfda import FDataGrid
from skfda.preprocessing.dim_reduction import FPCA

# each array: subjects × time, e.g. (26, 101)
time = np.linspace(0, 100, 101)

fd_gmed = FDataGrid(gmed, grid_points=time)
fd_gmax = FDataGrid(gmax, grid_points=time)

# stage 1: keep enough univariate PCs
fpca_gmed = FPCA(n_components=5)
fpca_gmax = FPCA(n_components=5)
gmed_scores = fpca_gmed.fit_transform(fd_gmed)
gmax_scores = fpca_gmax.fit_transform(fd_gmax)

# stage 2: put all muscle scores into one subject × feature matrix
Z = np.hstack([gmed_scores, gmax_scores])  # (26, 10)

# weighting must be chosen and reported explicitly
scale = Z.std(axis=0, ddof=1)
Z_weighted = Z / scale

mfpca = PCA(n_components=3)
joint_scores = mfpca.fit_transform(Z_weighted)  # (26, 3)
joint_loading_pc1 = mfpca.components_[0]

loadingを元の筋へ戻す

第2段階のPC1が [0.6, 0.1, 0.0, −0.7, 0.2, 0.0] なら、Gmed側のstage-1 PC1〜3とGmax側のstage-1 PC1〜3を、その係数で組み合わせる。

joint PC1の寄与(例)
筋stage-1 PC1PC2PC3
Gmed+0.6+0.10.0
Gmax−0.7+0.20.0

単純なPCAをscoreへかければ終わり、ではない

scoreの分散が大きい筋が第2段階を支配しないよう、総分散のそろえ方や重みを設計する。単純なscikit-learn PCAは、望んだ理論上のMFPCA weightingを自動では保証しない。

02.05 / read the result

MFPCAの結果グラフは、
この順番で読む

単独の筋のPCを眺めてから筋を足すのではなく、全筋セットを一つの結果として読む。最後は必ずscoreから元波形へ戻る。

01全筋の元波形artifact、欠測、時間ずれを確認
02平均ベクトル筋ごとの平均を同じ時間軸で見る
03全体の分散筋セット全体への説明率
04共同PC関数各筋の曲線をセットで解釈
05平均 ± PCscoreが高い/低い人の波形へ戻す
06joint score群差・前後差と再構成を確認

01 / RAW

全筋の元波形

Gmedだけでなく、GmaxやRFを重ねる。MFPCAが拾った共同変動が、実データのどの違いから出たのかを最初に把握する。

02 / MEAN VECTOR

筋ごとの平均波形

平均はPCではない。 MFPCAでは μ⃗(t) として、筋ごとの基準線を並べて確認する。

03 / VARIANCE

筋セット全体の説明率

PC1 45%、PC2 25%なら、複数筋を合わせた個人差の85%を3成分で説明する、という意味。重みづけで変わりうる。

04 / JOINT PC

曲線を必ずセットで読む

Gmedが+の時間帯とGmaxが−の時間帯を同時に読む。片方だけ安定していても、共同PC全体が安定とは限らない。

05 / MEAN ± PC

scoreの意味を波形へ翻訳

μ⃗(t) ± aφ⃗k(t) を筋ごとに描き、PC scoreが高い人/低い人の具体的な波形差を言葉にする。

06 / SCORES + RECON

最後に比較と再構成

共通joint scoreを群・前後で比較し、保持PCで各筋を再構成する。score plotの見た目だけで結論を決めない。

読み方の一文

「どの筋の、どの時間帯が、どの筋の、どの時間帯と、どちら向きに一緒に動くのか」を、共同PC関数と平均±PCから読む。

02 / chat Q&A

質問から、MFPCAの核心を固める

元チャットで実際につまずいた問いを出発点に、式・図・解釈を一段深くした。答えを先に読まず、まず自分の言葉で考えてから開く。

“

「2筋なら、Gmedのt1がこれ、t2がこれ…Gmaxのt1がこれ…という1点を作ると、あるタスクの特徴になるってこと?」
→ その理解でよい。ただし、その1点を全員分集めて、共同して変わる方向を探すのがMFPCA。

Q2筋なら「筋数 × 時間」の空間に、あるタスクを1点として置くと考えていい?

はい。 ただし1人の1タスクを1点にするだけで終わらず、全被験者の点を集めて「どの方向に散らばっているか」を探す。

zi = [Gmed(t1), …, Gmed(t101), Gmax(t1), …, Gmax(t101)]T

この点は「Gmedの形」と「Gmaxの形」の組み合わせ全体。MFPCAのPC1は、たとえば Gmed立脚初期↑とGmax立脚後期↓が一緒に起きる方向を表す。

Q「1筋は無限軸の値を持つ1点、2筋なら無限次元の空間が1つの軸になる」という理解でいい?

前半はよいが、後半は修正が必要。2筋で「一つの軸に潰れる」のではなく、二つの関数を束ねた直積空間を作る。

数学的には x⃗(t)=[xGmed(t),xGmax(t)]T というベクトル値関数。その巨大な空間で、MFPCAが一つの共同PC方向を見つける。

Q共分散行列の各セルが表していたものが、セルごとに時間×時間の行列になった感じ?

その理解でほぼ正確。 普通の2変数の共分散行列の各セルを、筋ペアの共分散面へ置き換える。

C = [[CGmed,Gmed, CGmed,Gmax], [CGmax,Gmed, CGmax,Gmax]]

2筋×101時点なら各ブロックは101×101、全体は202×202。対角ブロックは筋内、非対角ブロックは筋間のcross-covariance。

Qcross-covarianceは「Gmedが先に動くと、あとでGmaxが動く」という意味?

それだけではない。 CGmed,Gmax(s,t) は、被験者間でGmedの時刻 s の偏差とGmaxの時刻 t の偏差が一緒に変わるかを表す。

正なら同じ向き、負なら逆向きの傾向。ただし時間的な因果、筋収縮の伝播、神経シナジーを証明する量ではない。

QGmedのPC1とGmaxのPC1を別々に出してから、MFPCAのPC1にするの?

基本の考え方は逆。MFPCAでは、複数筋を含む共同共分散構造から一つの固有方向を求める。その後で、固有方向のGmed部分・Gmax部分を分けて表示する。

2段階法では実装上、各筋のFPCA scoreを連結して第2段階PCAを行うが、第2段階のloadingを各筋の固有関数へ戻して、最終的なPC関数セットとして解釈する。

Q2本の曲線なのに、なぜMFPCA scoreは1人につき1つの数値なの?

共同PC方向への内積(投影)を取るから。Gmedの寄与とGmaxの寄与を足し合わせ、全筋セットとしてその方向にどれだけ近いかを1つに要約する。

ξi1 = ∑m ∫[xim(t)−μm(t)]φm,1(t)dt

筋ごとの曲線を捨てたのではなく、「この共同パターンをどれくらい持つか」という一つの座標へ投影している。

Q共同PC関数がプラスなら、その時間帯の差がプラスに大きくなりやすい? ピークのズレも表せる?

そのPCの向きを固定したとき、scoreが正の人は、正の φm,k(t) の時間帯で平均より高くなりやすい。負の時間帯では低くなりやすい。

前半が−、後半が+のような形は、活動ピークのタイミング差を表すこともある。ただし解釈は φ⃗(t) 単独で決めず、平均 ± PC と元波形で確認する。

Q符号が反転して、Gmedが−・Gmaxが+になったら別の結果?

固有関数の符号は任意。 φ⃗ と −φ⃗ は同じPCで、対応するscoreも反転すれば ξφ の再構成は同じ。

bootstrapやLOOの曲線を重ねる前に符号をそろえる。ソフトウェア間の+/−ではなく、平均±PCで実際の波形変化を合わせる。

Q説明分散が高ければ、MFPCAの共同パターンを信じていい?

説明分散は重要だが、それだけでは不十分。MFPCAでの説明率は複数筋セット全体の個人差に対する割合で、臨床的重要性や再現性を保証しない。

λ1≈λ2 ならPC番号が交換・混合しうるため、個々のPCではなくPC1–PC2が張る部分空間の安定性を確認する。

Qスケールを変えたら、Gmax優位からGmed↑+Gmax↓に変わった。どちらが正しい?

「どちらかが自動的に正しい」ではなく、結論がscalingに依存していることが結果。raw scale、総分散をそろえたscale、重みづけを並べ、研究質問に合う選択を事前に説明する。

設定を変えても同じ共同パターンが出るなら、解析条件に比較的依存しない頑健な所見と判断しやすい。

QGmedのPC5が説明分散3%なら、MFPCAでは捨てていい?

必ずしも捨ててよいとは言えない。単独の筋では小さいPC5でも、Gmax-PC2と強く共同変動する重要な情報かもしれない。一度捨てるとMFPCAには戻ってこない。

第1段階のPC数を3・5・8などで変え、joint PCの形、score、再構成がどう変わるかを感度分析する。

Q群比較やbefore/afterでは、筋ごとのscoreを別々に比較する?

複数筋の共同差を知りたいなら、全対象者をまとめて共通MFPCA空間を作り、そのjoint scoreを群比較する。

before/afterは研究質問で選ぶ。全期間を共通空間へ置く、beforeだけで作ったbaseline空間へafterを投影する、差分波形 Δxi(t)=after−before にMFPCAする、の3通りがある。別々に学習したPC1 scoreの単純な引き算は避ける。

QMFPCAで筋間の神経シナジーや、GmedがGmaxを変えた原因まで分かる?

分かるのは、この集団で複数波形がどの組み合わせで共同して変動したか。因果、機序、神経学的シナジーはMFPCAだけでは結論できない。

「Gmed立脚初期↑とGmax立脚後期↓が同じPCに載った」という記述から、次の実験・生理学的仮説を作るところまでが安全な使い方。

02.06 / validity

MFPCAの結果を、
どこまで信じてよいか

説明分散が高いだけでは足りない。固有値、筋ごとのPC関数セット、被験者scoreが、対象者の入れ替えや設定の変更に耐えるかを見る。

01 / LOO

1人ずつ外す

26人なら26回MFPCA。GmedだけでなくGmax・RFを含む PC関数セット全体 が保たれるか、外れた人が軸を支配していないかを見る。

02 / BOOTSTRAP

再標本化する

被験者を復元抽出して反復。曲線の帯やscoreの区間を確認する。重ねる前に符号をそろえ、符号反転を「不安定」と誤認しない。

03 / SCALING

重みを変える

raw scale、総分散をそろえたscale、basis数を変えて比較。Gmax優位から別の共同パターンへ変わるなら、その依存性を報告する。

04 / SUBSPACE

PC番号に固執しない

λ1≈λ2 ならPC1とPC2が交換・混合する。個々のラベルより、PC1–PC2が張る部分空間の安定性を比較する。

2段階法で特に忘れやすい点

第1段階で各筋のPC1–3だけを残すと、捨てたGmed-PC5がGmax-PC2と共同していたとしても、MFPCAには永遠に出てこない。

stage-1 PCs: 3 vs 5 vs 8 → joint PC・score・reconstruction

単変量の説明分散が3%でも、MFPCAで重要とは限らないとは言えない。PC数を変えた感度分析を、妥当性評価の一部として残す。

一部の筋の再構成が悪いとき

Gmed・Gmaxは良好だがRFが悪いなら、上位MFPCA-PCがGmed+Gmaxの共同変動を優先し、RF固有の個人差を後ろのPCへ送っている可能性がある。

必ずしも失敗ではない。「RFは他筋とは独立した変動が多い」という構造かもしれない。筋ごとの再構成誤差を分けて報告する。

MFPCAの妥当性点検表
点検対象見るもの不安定ならどうするか
固有値・説明率筋セット全体の分散、λの近さ、順位交換PC番号だけで解釈せず、部分空間を比較
PC関数セット全筋の時間パターンと符号をそろえた重ね描きGmedだけでなく全筋セットで再評価
joint scoreLOO/bootstrapでscoreと群差が保たれるか外れ値、標本数、重みづけを確認
再構成筋ごとの xim(t) と x̂im(t)PC数を増やし、固有変動を後ろのPCまで確認
外れ値score plotの孤立点と元波形測定ミス・artifact・正規化異常・真の戦略を切り分け

02.07 / research design

群比較・前後比較では、
研究質問へ戻る

MFPCAにも「唯一の正解の設計」はない。何を共同変動として説明したいかを先に決め、同じ物差しでscoreを比較する。

QUESTION / 群で位置が違う?

共通MFPCA空間

介入群と対照群をまとめてMFPCA。共同PC軸を共通にし、各対象者のjoint scoreを群間比較する。

all subjects → common φ⃗k(t) → compare ξik
QUESTION / baselineからどう移動?

baseline空間

beforeだけでMFPCAを学習し、afterを同じ空間へ投影。baselineの共同変動構造に対する移動として解釈する。

before fit → project after → ξbefore → ξafter
QUESTION / 介入で何が共同変化?

差分MFPCA

複数筋の差分波形 Δxi(t)=after−before を作り、その変化の共同パターンを分解する。

Δx⃗i(t) → MFPCA → Δφ⃗k(t)
01前処理筋・周期・正規化を固定
02全筋を可視化元波形と平均を点検
03各筋FPCA十分なPCを保持
04weightingスケールを設計
05MFPCA共同PC関数を読む
06検証・比較LOO・bootstrap・研究質問

MFPCAが答えられること

この集団では、複数の波形がどんな組み合わせで個人差を示すか。たとえば Gmed立脚初期↑ + Gmax立脚後期↓ + RF timing早期化 という「一緒の違い方」を、少数の軸へまとめられる。

MFPCAだけでは答えられないこと

なぜその共同変動が起きるか、神経学的シナジーがあるか、GmedがGmaxを変化させたかは分からない。MFPCAは 共変動構造 であり、因果・機序そのものではない。

02 / four choices

MFPCA 4択チェック

筋×時間、cross-covariance、共同PC、weighting、妥当性、研究設計まで。各問のあとに理由を表示して、用語ではなく構造を確認する。

第2章の理解度メーター

12問。正解だけでなく、なぜその選択肢になるかを説明できるかを確認する。

正解 0/32 · 回答済み 0/32

Q21 / MFPCA → 目的

MFPCAが主に探すものはどれ?
未回答

Q22 / MFPCA → 次元

2筋をそれぞれ101時点で測ったとき、1人の1タスクはどう表される?
未回答

Q23 / MFPCA → ブロック共分散

2筋のブロック共分散行列について正しい説明はどれ?
未回答

Q24 / MFPCA → cross-covariance

CGmed,Gmax(s,t) が表すものはどれ?
未回答

Q25 / MFPCA → 共同PC

MFPCAのPC1関数について正しい説明はどれ?
未回答

Q26 / MFPCA → score

2本の波形から、1人につき1つのjoint scoreを作れる理由は?
未回答

Q27 / MFPCA → 符号

共同PC関数の符号が反転したとき、正しい扱いはどれ?
未回答

Q28 / MFPCA → 固有値が近い

λ1とλ2が近いとき、最も適切な確認はどれ?
未回答

Q29 / MFPCA → scaling

raw scaleではGmax優位、分散をそろえるとGmed↑+Gmax↓になった。どう読む?
未回答

Q30 / MFPCA → 第1段階PC数

Gmed-PC5の単変量説明分散が3%でも、MFPCAで検討する価値がある理由は?
未回答

Q31 / MFPCA → 研究設計

介入前後の複数筋を比較するとき、適切な設計はどれ?
未回答

Q32 / MFPCA → 限界

MFPCAの結果だけからは言えないことはどれ?
未回答

第2章の目安

9問以上に正解し、Q22の202次元、Q23のブロック構造、Q26のscore、Q29のscaling、Q31の研究設計を説明できれば、MFPCAの骨格をつかめている。

END / chapter 02

第2章の持ち帰る5行

FPCAが1波形の個人差を読むなら、MFPCAは複数波形の「一緒の違い方」を読む。

01

1人を1点にする

2筋×101時点なら、筋と時間を連結した202次元の1点。

02

共分散をブロックで見る

対角は筋内、非対角は筋間cross-covariance。

03

PCは曲線のセット

一つの共同方向を筋ごとのPC関数へ分けて読む。

04

weightingを透明にする

scaling、第1段階PC数、符号、部分空間の安定性を記録する。

MFPCAを一言で

複数の時系列波形について、人による「一緒の違い方」を少数の軸に分解する

最後はいつも、joint score → 共同PC関数 → 平均±PC → 元の筋・時間帯、の順に戻って説明する。