PCAの最初の固有ベクトルが、基になるトレンドの導関数に似ているのはなぜですか?


8

PCAを使用して空間的に関連するいくつかの時系列を分析しています。最初の固有ベクトルは系列の平均トレンドの導関数に対応しているようです(以下の例を参照)。なぜ最初の固有ベクトルがトレンド自体ではなくトレンドの導関数に関連しているのか知りたいのですが。

データは行列に配置され、行は各空間エンティティの時系列であり、列(およびPCAの次元)は年です(つまり、以下の例では、7年ごとに10の時系列)。PCAの前に、データも平均中心です。

Stanimirovic et al。、2007も同じ結論に達しましたが、それらの説明は、線形代数についての私の理解を少し超えています。

例

[更新]- 提案どおりにデータを追加します

[Update2]-回答済み。結果をプロットするときに、コードが固有ベクトル行列の転置を誤って使用していることを発見しました(excel_walkthrough)(ありがとう@amoeba)。この特定のセットアップで転置固有ベクトル/微分関係が存在するのは単なる偶然のようです。この投稿で数学的かつ直観的に説明されているように、最初の固有ベクトルは、実際には、その派生物ではなく、基になるトレンドに関連しています


「平均中心」とは、列の平均が減算されるか、行の平均が減算されるか、またはその両方であることを意味しますか?
アメーバ2016年

「トレンドの導関数」が何を意味するのかを説明してください。固有ベクトルは数値ですが、図では導関数を関数として考えているようです。
whuber

@amoeba-列の平均が減算されます(毎年、空間全体の平均を計算します)
ポールj

@whuber-「トレンドの導関数」とは、単に基礎となるトレンドの導関数/最初の差異を指します。上記の例では、最初のグラフの黒い破線が私の「根底にある傾向」(平均の動き)です。この線の最初の違いは、2番目のグラフの黒い実線で、これはPCAから推定された最初の固有ベクトル(どちらも正規化されたスケールで)にほぼ等しくなります。
ポールj

私はまだ道に迷っています。黒い実線は-1.4から+1.4の間で変化します。それはどのような意味で「ほぼ等しい」ということですか?
whuber

回答:


6

ちょっと平均心を無視しましょう。データを理解する1つの方法は、各時系列を全体的な「トレンド」のほぼ固定された倍数として表示することです。これは、それ自体が時系列(期間の数)。以下、これを「同様の傾向がある」と呼びます。 p = 7x=(x1,x2,,xp)p=7

これらの倍数(は時系列の数)に対してを書くと、データ行列はおよそ n = 10ϕ=(ϕ1,ϕ2,,ϕn)n=10

X=ϕx.

PCA固有値(平均センタリングなし)は、次の固有値です。

XX=(xϕ)(ϕx)=x(ϕϕ)x=(ϕϕ)xx,

のでちょうど数です。定義により、固有値および対応する固有ベクトル、λ βϕϕλβ

(1)λβ=XXβ=(ϕϕ)xxβ=((ϕϕ)(xβ))x,

ここでも、数値はベクトルと交換できます。してみましょうそう最大固有値、(すべての時系列が同じよう常にゼロでない限り)こと。X λ λ > 0xβxλλ>0

の右側は倍数であり、左側は非ゼロの倍数であるため、固有ベクトルも倍数でなければなりません。X β β X(1)xββx

言い換えると、時系列のセットがこの理想(すべてが共通の時系列の倍数である)に適合する場合、

  1. PCAには固有の正の固有値があります。

  2. 共通の時系列またがる一意の対応する固有空間があります。x

口語的に、(2)は「最初の固有ベクトルはトレンドに比例する」と述べています。

PCAの「平均の中央揃え」とは、が中央揃えされることを意味します。列は時系列の観測時間に対応しているため、これは、時間ごとにすべての時系列の平均をゼロに個別に設定することにより、平均時間トレンドを削除することになります。したがって、各時系列は残差に置き換えられ。ここで、は平均です。しかし、これは以前と同じ状況で、単純にを平均値からの偏差で置き換えます。 P φ I X φ I - ˉ φX ˉ φ φ I φnpϕix(ϕiϕ¯)xϕ¯ϕiϕ

逆に、PCAに固有の非常に大きな固有値がある場合、単一の主成分を保持し、元のデータ行列厳密に近似することができます。したがって、この分析には、その有効性をチェックするメカニズムが含まれています。X

他のすべてを支配する1つの主成分がある場合に限り、すべての時系列は同様の傾向を示します。

この結論は、生データのPCAと(列)平均中心データのPCAの両方に適用されます。


説明させてください。 この投稿の最後には、Rここで使用されているモデルに従ってランダムデータを生成し、最初のPCを分析するコードがあります。との値は、質的に、質問に示されている値である可能性があります。このコードは、2行のグラフィックスを生成します。並べ替えられた固有値を示す「スクリーンプロット」と、使用されたデータのプロットです。これが結果のセットです。ϕxϕ

図

生データは右上に表示されます。左上のスクリープロットは、最大の固有値が他のすべてを支配していることを確認します。データの上に、最初の固有ベクトル(最初の主成分)を太い黒い線としてプロットし、全体の傾向(時間平均)を赤い破線としてプロットしました。 彼らは事実上偶然です。

中央に配置されたデータが右下に表示されます。これで、データの「傾向」はレベルではなく変動の傾向になります。スクリープロットは良いとは言えませんが、最大の固有値が優勢ではなくなりましたが、最初の固有ベクトルはこの傾向をうまく追跡しています。

#
# Specify a model.
#
x <- c(5, 11, 15, 25, 20, 35, 28)
phi <- exp(seq(log(1/10)/5, log(10)/5, length.out=10))
sigma <- 0.25 # SD of errors
#
# Generate data.
#
set.seed(17)
D <- phi %o% x * exp(rnorm(length(x)*length(phi), sd=0.25))
#
# Prepare to plot results.
#
par(mfrow=c(2,2))
sub <- "Raw data"
l2 <- function(y) sqrt(sum(y*y))
times <- 1:length(x)
col <- hsv(1:nrow(X)/nrow(X), 0.5, 0.7, 0.5)
#
# Plot results for data and centered data.
#
k <- 1 # Use this PC
for (X in list(D, sweep(D, 2, colMeans(D)))) {
  #
  # Perform the SVD.
  #
  S <- svd(X)
  X.bar <- colMeans(X)
  u <- S$v[, k] / l2(S$v[, k]) * l2(X) / sqrt(nrow(X))
  u <- u * sign(max(X)) * sign(max(u))
  #
  # Check the scree plot to verify the largest eigenvalue is much larger
  # than all others.
  #
  plot(S$d, pch=21, cex=1.25, bg="Tan2", main="Eigenvalues", sub=sub)
  #
  # Show the data series and overplot the first PC.
  #
  plot(range(times)+c(-1,1), range(X), type="n", main="Data Series",
       xlab="Time", ylab="Value", sub=sub)
  invisible(sapply(1:nrow(X), function(i) lines(times, X[i,], col=col[i])))
  lines(times, u, lwd=2)
  #
  # If applicable, plot the mean series.
  #
  if (zapsmall(l2(X.bar)) > 1e-6*l2(X)) lines(times, X.bar, lwd=2, col="#a03020", lty=3)
  #
  # Prepare for the next step.
  #
  sub <- "Centered data"
}

これは、「最初の固有ベクトルが傾向に比例する」理由について完全に理解でき、分析結果の前に私が期待していたことです。ただし、Stanimivrocと私が見ているのは、最初の固有ベクトルは傾向のDERIVATIVE(または最初の差分)に比例し、傾向自体ではないということです。
ポールj

はい-そして、平均のセンタリングを実行した後に何を見ていると思いますか?
whuber

0を中心とする基礎となるデータのみ...これは2次元の例です。私の場合、2つではなく7-Dimensions(axes)です。データの形状/傾向は平均中心化によって変化しません... PCAが意味のある結果を生成することを保証するために、中心化されます。
ポールj

2
@pauljデータを投稿していただきありがとうございます。あなたの姿は再現できません。平均のセンタリングを行ってからPCA(SVD)を行うと、予想どおり、PC1の定数符号(および「単調増加」、「トレンド」やwhuberのと同様)が得られます。x
amoeba

1
@amoeba-ありがとうございます...あなたは正しいです。結果をプロットするときに、コードが固有ベクトル行列の転置を誤って使用していることがわかりました(excel_walkthrough)。転置/一階微分の関係が存在するのは単なる偶然のようです。ありがとうございました。
ポールj

0

データの導関数(〜最初の違い)は、非定常性が原因であるデータの個別の依存関係を削除します(ARIMAを参照)。次に回復するのは、ほぼ安定した定常信号です。SVDが回復していると思います。


1
これがPC1の類似性と平均の導関数に関する質問にどのように答えるかはわかりません。
amoeba

ご返信ありがとうございました。私は@amoebaにも同意します...導関数(またはあなたが言った最初の差)がデータを定常にするのに役立つことを理解していますが、なぜこの最初の差がこのセットアップの最初の主成分に本質的に等しいのですか?
ポールj

なぜそうなのかについて、私はそれほど強い直感を持っていません。これが経験的にそうであるかどうかを確認するためにいくつかのシミュレーションを実行する価値があるかもしれませんが、分析的に透明であるかどうかはわかりません。
LE Rogerson、2016年

1
@LERogersonに感謝します...はい、シミュレーションをいくつか実行しましたが、結果は保持されているようです。 Stanimirovic紙、私は上記の投稿は同じ結果と申し出複雑な線形代数の説明がありますが、それは私の把握/非常に直感的ではない超えてほんの少しです。
ポールj

@paulj正直なところ、私はあなたの投稿の例をよく理解していません。私があなたの図1を見て、平均の中心化の後に何が起こるかを想像すると、黒い破線は一定のゼロにあり、ほとんどの時系列は完全にゼロより上または完全に下になるはずです。これは、PC1が一定の符号である必要があることを私に示唆していますが、図2に示されているPC1は符号を数回変更します。これは奇妙です。質問にデータを追加しますか?
amoeba
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.