เด็ก ๆ สามารถดึงพ่อแม่ของพวกเขามารวมกันในการฉาย PCA ของชุดข้อมูล GWAS ได้อย่างไร


9

ใช้เวลาประมาณ 20 จุดสุ่มในพื้นที่ 10,000 มิติที่มีพิกัดแต่ละ IID จาก(0,1) แยกออกเป็น 10 คู่ ("คู่รัก") และเพิ่มค่าเฉลี่ยของแต่ละคู่ ("เด็ก") ไปยังชุดข้อมูล จากนั้นทำ PCA บนผลลัพธ์ 30 คะแนนและลงจุด PC1 กับ PC2N(0,1)

สิ่งที่น่าทึ่งเกิดขึ้น: "ครอบครัว" แต่ละแห่งก่อให้เกิดจุดที่อยู่ใกล้กัน แน่นอนว่าเด็กทุกคนอยู่ใกล้กับผู้ปกครองแต่ละคนในพื้นที่ 10,000 มิติดั้งเดิมดังนั้นใคร ๆ ก็คาดหวังว่ามันจะอยู่ใกล้กับพ่อแม่ในพื้นที่ PCA อย่างไรก็ตามในพื้นที่ PCA ผู้ปกครองแต่ละคู่อยู่ใกล้กันเช่นกันแม้ว่าในพื้นที่ดั้งเดิมพวกเขาเป็นเพียงจุดสุ่ม!

เด็ก ๆ จัดการดึงผู้ปกครองมารวมกันในการฉาย PCA ได้อย่างไร

ป้อนคำอธิบายรูปภาพที่นี่

บางคนอาจกังวลว่าสิ่งนี้ได้รับอิทธิพลจากความจริงที่ว่าเด็กมีบรรทัดฐานต่ำกว่าพ่อแม่ สิ่งนี้ดูเหมือนจะไม่สำคัญ: ถ้าฉันสร้างเด็กเป็นโดยที่และเป็นจุดของผู้ปกครองพวกเขาจะมีบรรทัดฐานเดียวกันโดยเฉลี่ยกับผู้ปกครอง แต่ฉันยังคงสังเกตเห็นปรากฏการณ์เชิงคุณภาพในพื้นที่ PCA:(x+y)/2xy

ป้อนคำอธิบายรูปภาพที่นี่

คำถามนี้ใช้ชุดข้อมูลของเล่น แต่ได้แรงบันดาลใจจากสิ่งที่ฉันสังเกตเห็นในชุดข้อมูลจริงจากการศึกษาความสัมพันธ์จีโนมกว้าง (GWAS) ที่มีมิติเป็นแบบหลายนิวคลีโอไทด์ polymorphisms (SNP) ชุดข้อมูลนี้มีทริโอพ่อแม่ลูก


รหัส

%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
ในมิติที่สูงมากทุกจุดข้อมูลของข้อมูลที่ไม่เกี่ยวข้องจะอยู่ในมุมของพื้นที่และระยะห่างระหว่างจุดเกือบเท่ากัน หากคุณเลือกจุดหนึ่งและผูกจุดนั้นกับอีกจุดหนึ่งโดยการสร้างจุดครึ่งทาง (โดยเฉลี่ย) ระหว่างจุดนั้นคุณได้สร้างกลุ่ม: คุณได้แนะนำระยะทางที่เล็กกว่าระยะทางที่ระบุไว้ก่อนหน้านี้อย่างชัดเจน
ttnphns

1
ใช่ฉันเข้าใจว่าคะแนนเดิม 20 คะแนนนั้นเท่ากันหรือมากกว่ากัน และเห็นได้ชัดว่าเด็ก ๆ มีความใกล้ชิดกับพ่อแม่มากกว่าพ่อแม่สองคน สิ่งที่ฉันยังไม่ได้รับคือเหตุผลที่พ่อแม่เข้ามาใกล้ในการฉาย PCA ...
amoeba

คุณพยายามฉายภาพในสองมิติสุ่มหรือไม่? คุณได้อะไร
ttnphns

1
สัญชาตญาณของฉันน่าจะเป็นแบบนี้: จุดสามจุดถูกฉายเป็นกองเกือบตั้งฉากกับพื้นที่ย่อย PC1-2 นี่คือวิธีที่ตำแหน่งของเครื่องบินลำนี้มีกำหนดที่จะเพิ่มความแปรปรวน คุณเห็นแล้วว่าคุณมีข้อมูลแบบต่อเนื่องหลายรูปแบบซึ่งส่วนใหญ่อยู่ห่างจากศูนย์กลาง (เพราะคะแนนทั้งหมดอยู่ที่ 10K สลัว) เช่นคลาวด์เช่นดัมเบลล์มักจะดึงพีซีหลักเพื่อเจาะพื้นที่หนัก และตั้งฉากกับแฝดสาม
ttnphns

1
การค้นพบ btw นั้นให้คำแนะนำกับปัญหาที่ PCA (PCoA) นั้นไม่ดีเท่า MDS เพราะมันให้คะแนนและไม่ได้จำลองระยะทางโดยตรง MDS ที่เกิดซ้ำจะคาดว่าจะผลิต "กลุ่ม" เหล่านั้นในระดับที่น้อยกว่ามาก
ttnphns

คำตอบ:


8

ในระหว่างการสนทนากับ @ttnphns ในความคิดเห็นด้านบนฉันรู้ว่าปรากฏการณ์เดียวกันนี้สามารถสังเกตได้ด้วยครอบครัวน้อยกว่า 10 ครอบครัว สามตระกูล ( n=3ในข้อมูลโค้ดของฉัน) ปรากฏที่มุมของรูปสามเหลี่ยมด้านเท่า ในความเป็นจริงมันก็เพียงพอที่จะพิจารณาเพียงสองครอบครัว ( n=2): พวกเขาแยกออกจากกันตาม PC1 โดยแต่ละครอบครัวคาดการณ์ไว้ในจุดเดียว

กรณีของสองครอบครัวสามารถมองเห็นได้โดยตรง จุดสี่จุดดั้งเดิมในพื้นที่ 10,000 มิติเกือบจะเป็นมุมฉากและอาศัยอยู่ในพื้นที่ย่อย 4 มิติ ดังนั้นพวกเขาในรูปแบบ 4-simplex หลังจากการรวมศูนย์พวกเขาจะสร้างจัตุรมุขประจำซึ่งเป็นรูปร่างในแบบ 3 มิติ นี่คือลักษณะ:

* ป้อนคำอธิบายรูปภาพที่นี่ *

ก่อนที่จะเพิ่มลูก ๆ PC1 สามารถชี้ไปที่ใดก็ได้ ไม่มีทิศทางที่ต้องการ อย่างไรก็ตามหลังจากที่เด็กสองคนอยู่ในตำแหน่งตรงกลางของขอบสองฝั่งที่แตกต่างกัน PC1 จะผ่านไปได้ทันที! การจัดเรียงของหกจุดนี้ถูกอธิบายโดย @ttnphns ว่า "ดัมเบล":

เมฆอย่างเช่นดัมเบลนั้นมีแนวโน้มที่จะดึงพีซีหลักออกมาเพื่อเจาะทะลุพื้นที่ที่หนักหน่วง

โปรดทราบว่าขอบตรงข้ามของจัตุรมุขทั่วไปเป็นมุมฉากซึ่งกันและกันและยังเป็นมุมฉากกับเส้นที่เชื่อมต่อศูนย์กลางของพวกเขา ซึ่งหมายความว่าแต่ละตระกูลจะถูกฉายไปที่จุดเดียวบนพีซี 1

บางทีแม้แต่น้อยโดยสัญชาตญาณถ้าเด็กสองคนถูกปรับขนาดด้วยปัจจัยเพื่อให้พวกเขามีบรรทัดฐานเดียวกันกับที่พ่อแม่มีอยู่พวกเขาจะ "เกาะติดกับ" ของจัตุรมุขทำให้เกิดการฉาย PC1 กับผู้ปกครองทั้งสอง และเด็กที่อยู่ห่างไกลออกไป สิ่งนี้สามารถเห็นได้ในรูปที่สองในคำถามของฉัน: แต่ละครอบครัวมีผู้ปกครองอยู่ใกล้กับเครื่องบิน PC1 / PC2 จริงๆ (แม้ว่าพวกเขาจะไม่เกี่ยวข้อง!) และลูกของพวกเขาอยู่ห่างกันเล็กน้อย2


3
การสร้างภาพที่ยอดเยี่ยม! Mom1-Child1-Dad1 เป็นดิสก์หนึ่งแผ่นหรือแพนเค้กและ Mom2-Child2-Dad2 เป็นอีกก้อนหนึ่งของเมฆ bimodal มันดึงดูด PC1 เพื่อเพิ่มความแปรปรวนสูงสุดของการฉายภาพเพื่อเจาะ "ครอบครัว" ทั้งสองแบบมุมฉากกับเส้นพ่อแม่และลูก ดังนั้นแต่ละครอบครัวจึงมีโครงการหนึ่งจุด (เด็กในกรณีนี้) และเรามีครอบครัวสองครอบครัวที่มีสองข้างในที่แน่นมากซึ่งอยู่ห่างจากกลุ่มอื่น ๆ ในการฉาย
ttnphns

1
คุณใช้โปรแกรมใดในการวาดรูป
ttnphns

4
กระดานไวท์บอร์ดเครื่องหมายไวท์บอร์ดและกล้องสมาร์ทโฟน :-)
อะมีบา
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.