Làm thế nào để trẻ có thể kéo cha mẹ chúng lại với nhau trong phép chiếu PCA của tập dữ liệu GWAS?


9

Lấy 20 điểm ngẫu nhiên trong không gian 10.000 chiều với mỗi tọa độ iid từ . Chia chúng thành 10 cặp ("cặp vợ chồng") và thêm trung bình của mỗi cặp ("một đứa trẻ") vào bộ dữ liệu. Sau đó, làm PCA trên kết quả 30 điểm và vẽ PC1 so với PC2.N(0,1)

Một điều đáng chú ý xảy ra: mỗi "gia đình" tạo thành một bộ ba điểm gần nhau. Tất nhiên mọi đứa trẻ đều gần gũi hơn với mỗi cha mẹ của nó trong không gian 10.000 chiều ban đầu, vì vậy người ta có thể mong đợi nó gần với cha mẹ cũng trong không gian PCA. Tuy nhiên, trong không gian PCA, mỗi cặp cha mẹ cũng ở gần nhau, mặc dù trong không gian ban đầu, họ chỉ là những điểm ngẫu nhiên!

Làm thế nào để trẻ có thể kéo cha mẹ lại với nhau trong phép chiếu PCA?

nhập mô tả hình ảnh ở đây

Người ta có thể lo lắng rằng điều này bằng cách nào đó bị ảnh hưởng bởi thực tế là trẻ em có chỉ tiêu thấp hơn cha mẹ. Điều này dường như không quan trọng: nếu tôi sinh ra những đứa trẻ là trong đó và là điểm của cha mẹ, thì chúng sẽ có trung bình giống như cha mẹ. Nhưng tôi vẫn quan sát một cách định tính hiện tượng tương tự trong không gian PCA:(x+y)/2xy

nhập mô tả hình ảnh ở đây

Câu hỏi này đang sử dụng một bộ dữ liệu đồ chơi nhưng nó được thúc đẩy bởi những gì tôi quan sát được trong một bộ dữ liệu trong thế giới thực từ một nghiên cứu kết hợp trên toàn bộ bộ gen (GWAS) trong đó kích thước là đa hình đơn nucleotide (SNP). Bộ dữ liệu này chứa bộ ba mẹ-con-con.


%matplotlib notebook

import numpy as np
import matplotlib.pyplot as plt
np.random.seed(1)

def generate_families(n = 10, p = 10000, divide_by = 2):
    X1 = np.random.randn(n,p)    # mothers
    X2 = np.random.randn(n,p)    # fathers
    X3 = (X1+X2)/divide_by       # children
    X = []
    for i in range(X1.shape[0]):
        X.extend((X1[i], X2[i], X3[i]))
    X = np.array(X)

    X = X - np.mean(X, axis=0)
    U,s,V = np.linalg.svd(X, full_matrices=False)
    X = U @ np.diag(s)
    return X

n = 10
plt.figure(figsize=(4,4))
X = generate_families(n, divide_by = 2)
for i in range(n):
    plt.scatter(X[i*3:(i+1)*3,0], X[i*3:(i+1)*3,1])
plt.tight_layout()
plt.savefig('families1.png')

plt.figure(figsize=(4,4))
X = generate_families(n, divide_by = np.sqrt(2))
for i in range(n):
    plt.scatter(X[i*3:(i+1)*3,0], X[i*3:(i+1)*3,1])
plt.tight_layout()
plt.savefig('families2.png')

1
Ở chiều cao như vậy, tất cả các điểm dữ liệu của dữ liệu không tương quan ngẫu nhiên được đặt ở các góc của không gian và khoảng cách giữa các điểm gần như giống nhau. Nếu bạn chọn một điểm và buộc điểm đó với một điểm khác bằng cách tạo điểm nửa đường (trung bình) giữa chúng, thì bạn đã tạo một cụm: bạn đã giới thiệu khoảng cách nhỏ hơn rõ rệt so với khoảng cách được đề cập trước đó.
ttnphns

1
Vâng, tôi hiểu rằng 20 điểm ban đầu đều ít nhiều tương đương nhau. Và rõ ràng là những đứa trẻ gần gũi với cha mẹ hơn bất kỳ hai cha mẹ nào dành cho nhau. Điều tôi vẫn không nhận được là tại sao cha mẹ trở nên thân thiết trong dự án PCA ...
amip

Bạn đã thử chiếu trên hai chiều ngẫu nhiên chưa? Bạn đã nhận được gì?
ttnphns

1
Trực giác của tôi sẽ là thế này: bộ ba điểm được chiếu dưới dạng các cọc gần như vuông góc với không gian con PC1-2. Đây là cách vị trí của mặt phẳng này được xác định để tối đa hóa phương sai . Bạn thấy đấy, bạn đã có dữ liệu đa phương thức với các chế độ chủ yếu ở xa trung tâm (vì các điểm đều được hiển thị trong 10K mờ), như một đám mây, như một quả tạ, sẽ có xu hướng kéo các PC chính để chúng xuyên qua các vùng nặng và do đó vuông góc với bộ ba.
ttnphns

1
Phát hiện, btw hướng dẫn cho vấn đề PCA (PCoA) không tốt bằng MDS vì nó chiếu điểm và không mô hình hóa khoảng cách trực tiếp. Một MDS lặp sẽ dự kiến ​​sẽ tạo ra các "cụm" ở mức độ thấp hơn nhiều.
ttnphns

Câu trả lời:


8

Trong cuộc thảo luận với @ttnphns trong các bình luận ở trên, tôi nhận ra rằng hiện tượng tương tự có thể được quan sát thấy với nhiều hơn 10 gia đình. Ba gia đình ( n=3trong đoạn mã của tôi) xuất hiện đại khái ở các góc của một tam giác đều. Trên thực tế, chỉ cần xem xét hai gia đình ( n=2) là đủ : họ cuối cùng tách ra dọc theo PC1, với mỗi gia đình được chiếu gần như vào một điểm.

Trường hợp của hai gia đình có thể được hình dung trực tiếp. Bốn điểm ban đầu trong không gian 10.000 chiều gần như trực giao và nằm trong không gian con 4 chiều. Vì vậy, chúng tạo thành một đơn giản 4. Sau khi định tâm, chúng sẽ tạo thành một khối tứ diện đều đặn có hình dạng 3D. Đây là cách nó trông như thế nào:

* nhập mô tả hình ảnh ở đây *

Trước khi trẻ em được thêm vào, PC1 có thể chỉ ra bất cứ nơi nào; không có hướng ưa thích. Tuy nhiên, sau khi hai đứa trẻ được định vị ở trung tâm của hai cạnh đối diện, PC1 sẽ đi xuyên qua chúng! Sự sắp xếp sáu điểm này được @ttnphns mô tả là một "quả tạ":

một đám mây như quả tạ, sẽ có xu hướng kéo các PC chính để chúng xuyên qua các vùng nặng

Lưu ý rằng các cạnh đối diện của một tứ diện đều là trực giao với nhau và cũng trực giao với đường thẳng nối tâm của chúng. Điều này có nghĩa là mỗi gia đình sẽ được chiếu đến một điểm duy nhất trên PC1.

Có lẽ thậm chí ít trực giác hơn, nếu hai đứa trẻ được nhân rộng bởi yếu tố để cho chúng có cùng tiêu chuẩn như cha mẹ có, thì chúng sẽ "dính" tứ diện, dẫn đến phép chiếu PC1 với cả hai cha mẹ bị sụp đổ với nhau và con xa nhau hơn. Điều này có thể được nhìn thấy trong hình thứ hai trong câu hỏi của tôi: mỗi gia đình có bố mẹ thực sự thân thiết trên mặt phẳng PC1 / PC2 (NGAY CẢ KHI NÀO LÀ BẤT NGỜ!), Và con của họ cách xa nhau một chút.2


3
Hình dung tuyệt vời! Mom1-Child1-Dad1 là một đĩa hoặc bánh kếp, và Mom2-Child2-Dad2 là một đĩa khác, của đám mây lưỡng kim. Nó thu hút PC1, để tối đa hóa phương sai của phép chiếu, để xuyên thủng cả "gia đình" một cách trực giao với các dòng mẹ-con-bố của chúng. Do đó, mỗi gia đình chiếu vào một điểm (trong trường hợp này là một đứa trẻ) và chúng tôi có hai gia đình như hai bên rất chặt chẽ, cách xa nhau thành cụm trong hình chiếu.
ttnphns

1
Chương trình nào bạn đã sử dụng để vẽ pic?
ttnphns

4
Bảng trắng, bút đánh dấu bảng trắng và máy ảnh trên điện thoại thông minh :-)
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.