Tại sao trình xác định đầu tiên trong PCA giống với đạo hàm của một xu hướng cơ bản?


8

Tôi đang sử dụng PCA để phân tích một số chuỗi thời gian liên quan đến không gian và có vẻ như hàm riêng đầu tiên tương ứng với đạo hàm của xu hướng trung bình của chuỗi (ví dụ minh họa bên dưới). Tôi tò mò về lý do tại sao người bản địa đầu tiên liên quan đến đạo hàm của xu hướng trái ngược với chính xu hướng đó?

Dữ liệu được sắp xếp trong một ma trận trong đó các hàng là chuỗi thời gian cho mỗi thực thể không gian và các cột (và lần lượt kích thước trong PCA) là các năm (ví dụ: trong ví dụ dưới đây, chuỗi 10 thời gian trong 7 năm). Dữ liệu cũng được tập trung vào trung bình trước PCA.

Stanimirovic và cộng sự, 2007 đi đến cùng một kết luận, nhưng lời giải thích của họ hơi vượt quá tầm hiểu biết của tôi về đại số tuyến tính.

Thí dụ

[Cập nhật] - thêm dữ liệu theo đề xuất.

[Cập nhật2] - TRẢ LỜI. Tôi thấy mã của mình không chính xác khi sử dụng chuyển vị của ma trận eigenvector khi vẽ kết quả ( excel_walk phiên ) (cảm ơn @amoeba). Có vẻ như đó chỉ là một sự trùng hợp ngẫu nhiên mà mối quan hệ transpose-eigenvector / phái sinh tồn tại cho thiết lập cụ thể này. Như được mô tả về mặt toán học và trực giác trong bài viết này, trình phát sinh đầu tiên thực sự liên quan đến xu hướng cơ bản và không phải là dẫn xuất của nó .


Khi bạn nói "trung bình trung bình", bạn có nghĩa là trung bình cột bị trừ, trung bình hàng hoặc cả hai?
amip

Vui lòng giải thích ý của bạn về "đạo hàm của một xu hướng", cho rằng một hàm riêng là một số trong khi đồ họa gợi ý bạn quan niệm đạo hàm là một hàm .
whuber

@amoeba - trung bình cột bị trừ (cho mỗi năm, lấy ra mức trung bình trên không gian)
paul j

@whuber - "phái sinh của một xu hướng" chỉ đơn giản là nói đến đạo hàm / khác biệt đầu tiên của một xu hướng cơ bản. Trong ví dụ trên, đường màu đen nét đứt trong biểu đồ đầu tiên là "xu hướng cơ bản" của tôi (chuyển động trung bình). Sự khác biệt đầu tiên của dòng này là đường màu đen đặc trong đồ thị thứ hai, gần bằng với hàm riêng đầu tiên được suy ra từ PCA (cả hai trên thang đo chuẩn hóa).
paul j

Tôi vẫn bị mất: đường màu đen rắn đó thay đổi trong khoảng -1,4 đến +1,4. Theo nghĩa nào thì "gần bằng" bất cứ điều gì?
whuber

Câu trả lời:


6

Chúng ta hãy bỏ qua việc tập trung vào một lúc. Một cách để hiểu dữ liệu là xem từng chuỗi thời gian là xấp xỉ bội số cố định của một "xu hướng" tổng thể, mà chính nó là chuỗi thời gian (với số lượng khoảng thời gian). Tôi sẽ đề cập đến điều này dưới đây là "có một xu hướng tương tự." p = 7x=(x1,x2,,xp)p=7

ϕ=(ϕ1,ϕ2,,ϕn)n=10

X=ϕx.

Các giá trị riêng của PCA (không có định tâm trung bình) là các giá trị riêng của

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

ϕϕλβ

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

trong đó một lần nữa, số có thể được tính bằng vectơ . Đặt là giá trị riêng lớn nhất, vì vậy (trừ khi tất cả các chuỗi thời gian đều bằng 0 tại mọi thời điểm) .x bước sóng bước sóng > 0xβxλλ>0

Vì phía bên phải của là bội số của và phía bên trái là bội số khác của , nên eigenvector cũng phải là bội số của .x β β x(1)xββx

Nói cách khác, khi một tập hợp chuỗi thời gian phù hợp với lý tưởng này (tất cả đều là bội số của chuỗi thời gian chung), thì

  1. Có một giá trị riêng dương tính duy nhất trong PCA.

  2. Có một không gian eigens không gian tương ứng duy nhất được kéo dài theo chuỗi thời gian chung .x

Thông thường, (2) nói rằng "trình sinh riêng đầu tiên tỷ lệ thuận với xu hướng".

"Định tâm trung bình" trong PCA có nghĩa là các cột được căn giữa. Vì các cột tương ứng với thời gian quan sát của chuỗi thời gian, điều này giúp loại bỏ xu hướng thời gian trung bình bằng cách đặt riêng trung bình của tất cả chuỗi thời gian thành 0 tại mỗi lần . Do đó, mỗi chuỗi thời gian được thay thế bằng phần dư , trong đó là giá trị trung bình của . Nhưng đây là tình huống tương tự như trước đây, chỉ đơn giản là thay thế bằng độ lệch so với giá trị trung bình của chúng. p φ i x ( φ i - ˉ φ ) x ˉ φ φ i φnpϕix(ϕiϕ¯)xϕ¯ϕiϕ

Ngược lại, khi có một eigenvalue rất lớn duy nhất trong PCA, chúng tôi có thể giữ lại một thành phần chủ yếu duy nhất và gần sát với bản gốc ma trận dữ liệu . Do đó, phân tích này chứa một cơ chế để kiểm tra tính hợp lệ của nó:X

Tất cả các chuỗi thời gian có xu hướng tương tự khi và chỉ khi có một thành phần chính chi phối tất cả các thành phần khác.

Kết luận này áp dụng cho cả PCA trên dữ liệu thô và PCA trên dữ liệu trung tâm (cột).


Cho phép tôi minh họa. Cuối bài này là Rmã để tạo dữ liệu ngẫu nhiên theo mô hình được sử dụng ở đây và phân tích PC đầu tiên của họ. Các giá trị của và có khả năng định tính trong các câu hỏi. Mã này tạo ra hai hàng đồ họa: một "biểu đồ scree" hiển thị các giá trị riêng được sắp xếp và một biểu đồ của dữ liệu được sử dụng. Đây là một bộ kết quả.ϕxϕ

Số liệu

Dữ liệu thô xuất hiện ở phía trên bên phải. Biểu đồ scree ở phía trên bên trái xác nhận giá trị riêng lớn nhất thống trị tất cả những cái khác. Trên dữ liệu tôi đã vẽ sơ đồ đầu tiên (thành phần chính đầu tiên) là một đường màu đen dày và xu hướng chung (phương tiện theo thời gian) là một đường màu đỏ đứt nét. Họ thực tế là trùng hợp.

Dữ liệu trung tâm xuất hiện ở phía dưới bên phải. Bây giờ bạn "xu hướng" trong dữ liệu là một xu hướng thay đổi thay vì mức độ. Mặc dù cốt truyện scree không còn tốt đẹp - giá trị riêng lớn nhất không còn chiếm ưu thế - tuy nhiên, người bản địa đầu tiên thực hiện tốt công việc tìm ra xu hướng này.

#
# 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"
}

Điều này có ý nghĩa hoàn hảo về lý do tại sao "trình xác định đầu tiên tỷ lệ thuận với xu hướng", và là điều tôi đã mong đợi trước kết quả phân tích. Tuy nhiên, những gì Stanimivroc và tôi đang thấy là trình phát sinh đầu tiên tỷ lệ thuận với DERIVECT (hoặc khác biệt đầu tiên) của xu hướng ... và không phải là xu hướng.
paul j

Có - và bạn cho rằng bạn đang nhìn gì sau khi bạn thực hiện định tâm trung bình?
whuber

Chỉ là dữ liệu cơ bản tập trung vào khoảng 0 ... đây là ví dụ 2 chiều . Trong trường hợp của tôi, đó là 7 chiều (trục) thay vì hai. Hình dạng / xu hướng của dữ liệu không thay đổi thông qua định tâm trung bình ... nó chỉ được đặt ở giữa để giúp đảm bảo PCA mang lại kết quả có ý nghĩa.
paul j

2
@paulj Cảm ơn bạn đã đăng dữ liệu. Tôi không thể tái tạo con số của bạn. Khi tôi thực hiện định tâm trung bình và sau đó là PCA (SVD), tôi nhận được PC1 có dấu hiệu không đổi (và tăng một cách đơn điệu, tương tự như "xu hướng" của bạn và với whuber ), như tôi mong đợi. x
amip

1
@amoeba - cảm ơn bạn ... bạn đã đúng. Tôi thấy mã của mình không chính xác khi sử dụng chuyển vị của ma trận eigenvector khi vẽ kết quả ( excel_walk phiên ). Có vẻ như đó chỉ là sự trùng hợp ngẫu nhiên mà mối quan hệ chuyển vị / phái sinh đầu tiên tồn tại. Cám ơn bạn một lần nữa.
paul

0

Đạo hàm của dữ liệu (~ khác biệt đầu tiên) sẽ loại bỏ các phụ thuộc theo chiều trong dữ liệu do không ổn định (xem ARIMA). Những gì bạn sau đó phục hồi là xấp xỉ tín hiệu đứng yên ổn định, mà tôi đoán rằng SVD đang phục hồi.


1
Tôi không thấy cách này trả lời câu hỏi về sự giống nhau của PC1 và đạo hàm của giá trị trung bình.
amip

Cảm ơn bạn cả trả lời của bạn. Tôi cũng đồng ý với @amoeba ... Tôi hiểu rằng công cụ phái sinh (hoặc khác biệt đầu tiên như bạn đã nói) giúp làm cho dữ liệu đứng yên, nhưng tại sao sự khác biệt đầu tiên này về cơ bản lại tương đương với thành phần chính đầu tiên trong thiết lập này?
paul j

Tôi cũng không có trực giác mạnh mẽ như vậy về lý do tại sao điều này có thể xảy ra. Có thể đáng để chạy một số mô phỏng để xem liệu đây có phải là trường hợp thực nghiệm hay không, nhưng tôi không chắc liệu nó có trong suốt phân tích không.
LE Rogerson

1
Cảm ơn @LERogerson ... vâng, tôi đã chạy một vài mô phỏng và kết quả dường như được giữ vững. Bài báo Stanimirovic tôi đã đăng ở trên có cùng kết quả và đưa ra một lời giải thích đại số tuyến tính phức tạp, nhưng nó chỉ vượt quá tầm hiểu biết của tôi / không trực quan lắm.
paul j

@paulj Thành thật mà nói, tôi hoàn toàn không hiểu ví dụ được đưa ra trong bài viết của bạn. Nếu tôi nhìn vào Hình 1 của bạn và tưởng tượng những gì xảy ra sau khi định tâm trung bình, đường đứt nét màu đen sẽ ở mức 0 không đổi và hầu hết các chuỗi thời gian nên ở trên hoặc hoàn toàn dưới 0. Điều này gợi ý cho tôi rằng PC1 phải có dấu hiệu không đổi, nhưng PC1 của bạn được hiển thị trên Hình 2 thay đổi ký hiệu nhiều lần. Điều này thật lạ. Bạn có thể muốn thêm dữ liệu của bạn vào câu hỏi của bạn?
amip
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.