φFunctional PCA / 講義ノート
10 lectures · waveform → pattern → score

Functional data analysis / visual lecture note

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

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

intuitionequationsimplementationvaliditygait EMG

SOURCE NOTE 参照講義「functional PCA講義」と添付PDFをもとに再構成。下の5図は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) = ΣmmBm(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) = ΣmmBm(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点の波形を、例えば 123] という低次元特徴量にして、波形タイプの探索へ使える。

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

CHECK / four choices

4択で、理解を確かめる

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

使い方

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

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

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として次に行うべき説明は?
未回答

理解の目安

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を検討し、どの筋・時間帯に寄与があるかを元波形で確認する。

END / takeaways

持ち帰る5つのルール

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

01

PC関数は差の形

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

02

scoreは人の量

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

03

符号を単独で読まない

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

04

90%で終わらない

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

最終式

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

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