ความสัมพันธ์แปลก ๆ ในผลลัพธ์ SVD ของข้อมูลแบบสุ่ม พวกเขามีคำอธิบายทางคณิตศาสตร์หรือเป็นข้อบกพร่อง LAPACK?


21

ฉันสังเกตพฤติกรรมที่แปลกประหลาดมากในผลลัพธ์ SVD ของข้อมูลแบบสุ่มซึ่งฉันสามารถทำซ้ำได้ทั้งใน Matlab และ R ดูเหมือนว่าปัญหาตัวเลขในห้องสมุด LAPACK ใช่ไหม?

ผมวาดn=1000ตัวอย่างจากk=2มิติแบบเกาส์กับศูนย์เฉลี่ยและเอกลักษณ์ของความแปรปรวน: XN(0,I) ) ฉันรวบรวมพวกเขาใน1000×2 Data Matrix XX(ฉันสามารถเลือกศูนย์Xหรือไม่ก็ไม่ได้มีผลต่อการต่อไป.) แล้วฉันจะดำเนินการสลายตัวมูลค่าเอกพจน์ (SVD) เพื่อให้ได้X=USV ลองหาองค์ประกอบสองอย่างของUเช่นU11และและขอให้สิ่งที่เป็นความสัมพันธ์ระหว่างพวกเขาข้ามที่แตกต่างกันดึงของX ผมจะคาดหวังว่าถ้าจำนวน N R อีพีของดึงมีขนาดใหญ่พอสมควรแล้วทั้งหมดความสัมพันธ์ดังกล่าวควรจะเป็นรอบศูนย์ (เช่นความสัมพันธ์ของประชากรควรจะเป็นศูนย์และความสัมพันธ์ของกลุ่มตัวอย่างจะมีขนาดเล็ก)U22XNrep

แต่ผมสังเกตเห็นบางความสัมพันธ์ที่แข็งแกร่งวิจิตรพิสดาร (ประมาณ ) ระหว่างU 11 , U 12 , U 21และU 22และเฉพาะระหว่างองค์ประกอบเหล่านี้ องค์ประกอบคู่อื่น ๆ ทั้งหมดมีสหสัมพันธ์ประมาณศูนย์ตามที่คาดไว้ นี่คือลักษณะของเมทริกซ์สหสัมพันธ์สำหรับองค์ประกอบ20 "บน" ของU ที่ดูเหมือน ( 10องค์ประกอบแรกของคอลัมน์แรกจากนั้นองค์ประกอบ10แรกของคอลัมน์ที่สอง):±0.2U11U12U21U2220U1010

ความสัมพันธ์ SVD แปลก ๆ

สังเกตุว่ามีค่าสูงแปลก ๆ ที่มุมซ้ายบนของแต่ละควอแดรนท์

มันเป็นความเห็นของ @ whuberที่ทำให้เอฟเฟคนี้เป็นที่สนใจของฉัน @whuber แย้งว่า PC1 และ PC2 ไม่เป็นอิสระและนำเสนอความสัมพันธ์ที่แข็งแกร่งนี้เป็นหลักฐานสำหรับการที่ อย่างไรก็ตามความประทับใจของฉันคือเขาบังเอิญค้นพบข้อบกพร่องเชิงตัวเลขในห้องสมุด LAPACK เกิดขึ้นที่นี่คืออะไร?

นี่คือรหัส R ของ @ whuber:

stat <- function(x) {u <- svd(x)$u; c(u[1,1], u[2, 2])};
Sigma <- matrix(c(1,0,0,1), 2);
sim <- t(replicate(1e3, stat(MASS::mvrnorm(10, c(0,0), Sigma))));
cor.test(sim[,1], sim[,2]);

นี่คือรหัส Matlab ของฉัน:

clear all
rng(7)

n = 1000;     %// Number of variables
k = 2;        %// Number of observations
Nrep = 1000;  %// Number of iterations (draws)

for rep = 1:Nrep
    X = randn(n,k);
    %// X = bsxfun(@minus, X, mean(X));
    [U,S,V] = svd(X,0);

    t(rep,:) = [U(1:10,1)' U(1:10,2)'];
end

figure
imagesc(corr(t), [-.5 .5])
axis square
hold on
plot(xlim, [10.5 10.5], 'k')
plot([10.5 10.5], ylim, 'k')

หากคุณใช้ n = 4 และ k = 3 คุณจะเห็นความสัมพันธ์เช่นกัน
Aksakal

@ Aksakal: ใช่แน่นอนขอบคุณ ฉันแก้ไขเพื่อลบความแตกต่างที่อ้างสิทธิ์ระหว่าง k = 2 และ k = 3
อะมีบาพูดว่า Reinstate Monica

คำตอบ:


23

นี่ไม่ใช่ข้อผิดพลาด

ตามที่เราได้สำรวจ (อย่างกว้างขวาง) ในความคิดเห็นมีสองสิ่งที่เกิดขึ้น ประการแรกคือคอลัมน์ของUถูก จำกัด ให้เป็นไปตามข้อกำหนดของ SVD: แต่ละคอลัมน์จะต้องมีความยาวหน่วยและเป็นมุมฉากสำหรับส่วนอื่น ๆ ทั้งหมด การดูUเป็นตัวแปรสุ่มที่สร้างจากเมทริกซ์สุ่มXผ่านอัลกอริธึม SVD เฉพาะเราจึงทราบว่าk ( k +เหล่านี้k(k+1)/2จำกัด อิสระหน้าที่สร้างอ้างอิงทางสถิติในหมู่คอลัมน์ของUU

อ้างอิงเหล่านี้อาจได้รับการเปิดเผยในระดับที่มากหรือน้อยโดยการศึกษาความสัมพันธ์ระหว่างองค์ประกอบของU , แต่เป็นปรากฏการณ์ที่สองโผล่ออก : วิธีการแก้ปัญหา SVD ที่ไม่ซ้ำกัน อย่างน้อยที่สุดแต่ละคอลัมน์ของUสามารถถูกทำให้เป็นอิสระได้โดยอิสระให้โซลูชันที่แตกต่างอย่างน้อย2kกับคอลัมน์kความสัมพันธ์ที่แข็งแกร่ง (เกิน1/2 ) สามารถชักนำโดยการเปลี่ยนสัญญาณของคอลัมน์ที่เหมาะสม (วิธีหนึ่งที่จะทำเช่นนี้จะได้รับในการแสดงความคิดเห็นครั้งแรกของฉันที่จะตอบอะมีบาของในหัวข้อนี้: ผมบังคับให้ทุกuii,i=1,,kจะมีเครื่องหมายเดียวกันทำให้พวกเขาทั้งหมดเป็นลบหรือบวกทั้งหมดด้วยความน่าจะเป็นที่เท่าเทียมกัน) ในอีกทางหนึ่งความสัมพันธ์ทั้งหมดสามารถทำให้หายไปได้โดยการเลือกสัญญาณแบบสุ่มอิสระด้วยความน่าจะเป็นที่เท่าเทียมกัน (ฉันยกตัวอย่างด้านล่างในส่วน "แก้ไข")

ด้วยการดูแลที่เราบางส่วนสามารถมองเห็นทั้งสองปรากฏการณ์เหล่านี้เมื่ออ่านเมทริกซ์ scatterplot ของส่วนประกอบของUUลักษณะบางอย่าง - เช่นการปรากฏตัวของจุดเกือบกระจายอย่างสม่ำเสมอในภูมิภาควงกลมที่กำหนดอย่างดี - การขาดความเป็นอิสระ คนอื่น ๆ เช่น scatterplots แสดงความสัมพันธ์ที่ไม่ใช่ศูนย์ชัดเจนขึ้นอยู่กับตัวเลือกที่ทำในอัลกอริทึม - แต่ตัวเลือกดังกล่าวเป็นไปได้เพียงเพราะการขาดความเป็นอิสระในตอนแรก

การทดสอบขั้นสุดท้ายของอัลกอริธึมการสลายตัวอย่างเช่น SVD (หรือ Cholesky, LR, LU และอื่น ๆ ) ไม่ว่าจะเป็นสิ่งที่มันอ้าง ในกรณีนี้มันพอเพียงที่จะตรวจสอบว่าเมื่อ SVD ส่งกลับเมทริกซ์สามเท่า(U,D,V) , Xนั้นจะถูกกู้คืน, ขึ้นอยู่กับข้อผิดพลาดของจุดลอยตัวที่คาดไว้โดยผลิตภัณฑ์UDV ; คอลัมน์ของUและVเป็น orthonormal; และDนั้นเป็นเส้นทแยงมุม, องค์ประกอบในแนวทแยงนั้นไม่เป็นลบ, และถูกจัดเรียงตามลำดับจากมากไปน้อย ฉันใช้การทดสอบดังกล่าวกับsvdอัลกอริทึมในRและไม่เคยพบว่ามีข้อผิดพลาด แม้ว่าจะไม่ได้รับประกันว่ามันจะถูกต้องอย่างสมบูรณ์ประสบการณ์เช่นนี้ - ซึ่งฉันเชื่อว่ามีผู้คนมากมายร่วมแบ่งปัน - ชี้ให้เห็นว่าข้อผิดพลาดใด ๆ ที่จะต้องมีการป้อนข้อมูลพิเศษบางอย่างเพื่อให้ประจักษ์

สิ่งที่ตามมาคือการวิเคราะห์รายละเอียดเพิ่มเติมของประเด็นเฉพาะที่เกิดขึ้นในคำถาม


ใช้R's svdขั้นตอนแรกที่คุณสามารถตรวจสอบว่าเป็นkการเพิ่มขึ้นของความสัมพันธ์ระหว่างค่าสัมประสิทธิ์ของUเติบโตอ่อนแอแต่พวกเขายังคงเป็นศูนย์ หากคุณเพียงแค่ทำการจำลองที่มีขนาดใหญ่ขึ้นคุณจะพบว่าพวกเขามีความสำคัญ (เมื่อไหร่k=3 , 50,000 การทำซ้ำควรจะพอเพียง) ตรงกันข้ามกับการยืนยันในคำถามความสัมพันธ์ไม่ "หายไปอย่างสิ้นเชิง"

ประการที่สองวิธีที่ดีกว่าในการศึกษาปรากฏการณ์นี้คือกลับไปที่คำถามพื้นฐานเรื่องความเป็นอิสระของสัมประสิทธิ์ แม้ว่าความสัมพันธ์มีแนวโน้มที่จะใกล้ศูนย์ในกรณีส่วนใหญ่ขาดความเป็นอิสระที่เห็นได้ชัด นี้จะทำที่ชัดเจนมากที่สุดโดยการศึกษาการกระจายหลายตัวแปรเต็มรูปแบบของค่าสัมประสิทธิ์ของUUธรรมชาติของการแจกแจงปรากฏขึ้นแม้ในสถานการณ์จำลองขนาดเล็กซึ่งไม่สามารถตรวจพบความสัมพันธ์ที่ไม่ใช่ศูนย์ได้ ตัวอย่างเช่นตรวจสอบเมทริกซ์กระจายของค่าสัมประสิทธิ์ เพื่อให้สามารถใช้งานได้จริงฉันตั้งค่าขนาดของชุดข้อมูลจำลองแต่ละชุดเป็น4และเก็บk=2ไว้ดังนั้นจึงวาด1000การรับรู้ของเมทริกซ์U × 4×2สร้างเมทริกซ์1000 × 8 นี่คือเมทริกซ์ scatterplot เต็มรูปแบบโดยมีตัวแปรตามตำแหน่งภายในU :U1000×8U

Figure

สแกนลงคอลัมน์แรกเผยให้เห็นถึงการขาดความน่าสนใจของการเป็นอิสระระหว่างu11และอื่น ๆuij : ดูที่วิธีการด้านบนของ scatterplot กับu21เกือบจะว่างเช่น; หรือตรวจสอบคลาวด์แบบขึ้น - ลงที่เป็นรูปไข่ซึ่งอธิบายถึงความสัมพันธ์(u11,u22)และเมฆที่ลาดลงสำหรับ(u21,u12)คู่ การมองอย่างใกล้ชิดแสดงให้เห็นถึงการขาดความเป็นอิสระอย่างชัดเจนในหมู่ค่าสัมประสิทธิ์เกือบทั้งหมด: มีน้อยคนที่ดูเป็นอิสระจากระยะไกลแม้ว่าส่วนใหญ่จะมีความสัมพันธ์ใกล้เคียงกันก็ตาม

(หมายเหตุ: เมฆทรงกลมส่วนใหญ่เป็นการคาดการณ์จาก hypersphere ที่สร้างขึ้นโดยเงื่อนไขการทำให้เป็นมาตรฐานบังคับให้ผลรวมของกำลังสองของส่วนประกอบทั้งหมดของแต่ละคอลัมน์เป็นเอกภาพ)

Scatterplot เมทริกซ์ที่มีk=3และk=4แสดงรูปแบบที่คล้ายกัน: ปรากฏการณ์เหล่านี้ไม่ได้ จำกัด อยู่ที่k=2และไม่ขึ้นอยู่กับขนาดของชุดข้อมูลจำลองแต่ละอัน: พวกมันเพียงสร้างและตรวจสอบได้ยากขึ้น

คำอธิบายสำหรับรูปแบบเหล่านี้ไปยังอัลกอริทึมที่ใช้เพื่อให้ได้Uในการสลายตัวของค่าเอกพจน์ แต่เรารู้ว่ารูปแบบของความไม่อิสระดังกล่าวจะต้องมีอยู่โดยคุณสมบัติที่กำหนดของU : เนื่องจากแต่ละคอลัมน์ที่ต่อเนื่องกัน เงื่อนไข orthogonality เหล่านี้กำหนดการพึ่งพาการทำงานระหว่างค่าสัมประสิทธิ์ซึ่งแปลการพึ่งพาทางสถิติระหว่างตัวแปรสุ่มที่สอดคล้องกัน


แก้ไข

ในการตอบสนองต่อความคิดเห็นมันอาจคุ้มค่าที่จะกล่าวถึงขอบเขตที่ปรากฏการณ์การพึ่งพาอาศัยเหล่านี้สะท้อนถึงอัลกอริธึมพื้นฐาน (เพื่อคำนวณ SVD) และจำนวนที่มีอยู่ในธรรมชาติของกระบวนการ

เฉพาะรูปแบบของความสัมพันธ์ระหว่างค่าสัมประสิทธิ์ขึ้นอยู่กับการจัดการที่ดีเกี่ยวกับทางเลือกโดยพลการทำโดยอัลกอริทึม SVD,เพราะวิธีการแก้ปัญหาที่ไม่ซ้ำกัน: คอลัมน์ของUเสมออาจเป็นอิสระคูณ1หรือ11ไม่มีวิธีที่แท้จริงในการเลือกสัญญาณ ดังนั้นเมื่ออัลกอริธึม SVD สองตัวสร้างทางเลือกที่แตกต่างกัน (โดยพลการหรือสุ่ม) พวกเขาสามารถทำให้เกิดรูปแบบที่แตกต่างกันของ scatterplots ของ(uij,uij)ค่า หากคุณต้องการที่จะเห็นสิ่งนี้แทนที่statฟังก์ชั่นในรหัสด้านล่างโดย

stat <- function(x) {
  i <- sample.int(dim(x)[1]) # Make a random permutation of the rows of x
  u <- svd(x[i, ])$u         # Perform SVD
  as.vector(u[order(i), ])   # Unpermute the rows of u
}

นี่เป็นครั้งแรกที่สุ่มสั่งการสังเกตการณ์xดำเนินการ SVD จากนั้นใช้การเรียงลำดับผกผันเพื่อuให้ตรงกับลำดับการสังเกตเดิม เนื่องจากเอฟเฟ็กต์คือสร้างรูปแบบผสมของสแคทเทอร์พล็อตดั้งเดิมที่มีการสะท้อนและแบบหมุนดังนั้นสแลตต์พล็อตในเมทริกซ์จะดูสม่ำเสมอกว่ามาก ความสัมพันธ์ตัวอย่างทั้งหมดจะใกล้เคียงกับศูนย์มาก (โดยการก่อสร้าง: ความสัมพันธ์พื้นฐานคือศูนย์อย่างแน่นอน ) อย่างไรก็ตามการขาดความเป็นอิสระจะยังคงชัดเจน (ในรูปทรงกลมสม่ำเสมอที่ปรากฏขึ้นโดยเฉพาะระหว่างui,jและui,j )

การขาดข้อมูลในจตุภาคของบางส่วนของสแคทเทอร์พล็อตดั้งเดิม (ดังแสดงในรูปด้านบน) เกิดขึ้นจากวิธีที่ Rอัลกอริธึม SVD เลือกสัญญาณสำหรับคอลัมน์

ไม่มีอะไรเปลี่ยนแปลงเกี่ยวกับข้อสรุป เพราะคอลัมน์ที่สองของUคือ orthogonal ถึงแรกมัน (พิจารณาว่าเป็นตัวแปรสุ่มหลายตัวแปร) จึงขึ้นอยู่กับแรก (ถือเป็นตัวแปรสุ่มหลายตัวแปร) คุณไม่สามารถมีองค์ประกอบทั้งหมดของหนึ่งคอลัมน์ที่เป็นอิสระจากองค์ประกอบทั้งหมดของอื่น ๆ ; สิ่งที่คุณทำได้คือการดูข้อมูลในรูปแบบที่ไม่ชัดเจนการพึ่งพา - แต่การพึ่งพาจะยังคงมีอยู่


นี่คือRโค้ดที่ได้รับการอัพเดตเพื่อจัดการเคสk>2และวาดส่วนของเมทริกซ์สแคทเทอร์ล็อต

k <- 2    # Number of variables
p <- 4    # Number of observations
n <- 1e3  # Number of iterations
stat <- function(x) as.vector(svd(x)$u)
Sigma <- diag(1, k, k); Mu <- rep(0, k)
set.seed(17)
sim <- t(replicate(n, stat(MASS::mvrnorm(p, Mu, Sigma))))
colnames(sim) <- as.vector(outer(1:p, 1:k, function(i,j) paste0(i,",",j)))
pairs(sim[, 1:min(11, p*k)], pch=".")

3
ความสัมพันธ์เกิดขึ้นระหว่างองค์ประกอบแรกของคอลัมน์ของเพราะนั่นเป็นวิธีที่อัลกอริทึม SVD ทำงาน ที่แถวของXเป็นเสียนเป็นสาระสำคัญ: ฉันแน่ใจว่าคุณได้สังเกตเห็นว่าค่าสัมประสิทธิ์ของUมีไม่เสียน UXU
whuber

2
โดยวิธีการที่ฉันเพิ่งค้นพบว่าเพียงแค่แทนที่svd(X,0)ด้วยsvds(X)ในรหัส Matlab ของฉันทำให้ผลหายไป! เท่าที่ฉันรู้ฟังก์ชั่นทั้งสองนี้ใช้อัลกอริธึม SVD ที่แตกต่างกัน (ทั้งคู่เป็น LAPACK รูทีน แต่ต่างกันที่เห็นได้ชัด) ฉันไม่รู้ว่า R มีฟังก์ชั่นคล้ายกับ Matlab svdsหรือไม่ แต่ฉันสงสัยว่าถ้าคุณยังคงยืนยันว่ามันเป็นเอฟเฟกต์ "ของจริง" และไม่ใช่ปัญหาเชิงตัวเลข
อะมีบาพูดว่า Reinstate Monica

4
สุภาพบุรุษรอสักครู่ ทำไมคุณไม่พูดถึงสัญลักษณ์? เครื่องหมายของ eigenvector นั้นโดยพล แต่โปรแกรม svd ไม่ได้กำหนดแบบสุ่มสัญญาณขึ้นอยู่กับการใช้งาน svd และข้อมูล หากหลังจากแยกUคุณตัดสินใจแบบสุ่มว่าคอลัมน์แต่ละคอลัมน์จะยังคงอยู่ตามเดิมหรือจะเปลี่ยนเครื่องหมายของมันแล้วความสัมพันธ์ที่คุณกำลังพูดถึงจะหายไปหรือไม่
ttnphns

2
@ttnphns ถูกต้องตามที่อธิบายในการแก้ไขของฉัน แม้ว่าสิ่งนั้นจะทำให้ความสัมพันธ์หายไปการพึ่งพาระหว่างคอลัมน์ของจึงไม่หายไป (เวอร์ชั่นที่ปรับปรุงแล้วของฉันที่ให้มานั้นเทียบเท่ากับการเปลี่ยนเครื่องหมายของคอลัมน์แบบสุ่ม)Ustat
whuber

2
จุดเล็ก ๆ น้อย ๆ (สำหรับเธรดที่ยอดเยี่ยมนี้!) แผนกบริการไม่จำเป็นว่าองค์ประกอบในแนวทแยงของSจะอยู่ในลำดับที่เฉพาะเจาะจง; มันเป็นเรื่องของความสะดวกสบาย กิจวัตรอื่น ๆ รับประกันสิ่งนี้ (เช่น MATLAB's svds) แต่นั่นไม่ใช่ข้อกำหนดทั่วไป @amoeba: ดูsvds(ซึ่งดูเหมือนว่าจะเป็นอิสระจากพฤติกรรมที่มีปัญหานี้) การคำนวณจะขึ้นอยู่กับการคำนวณค่าลักษณะเฉพาะก่อน (ดังนั้นจึงไม่ได้ใช้รูทีนมาตรฐานdgesdd/ dgesvdLAPACK - ฉันสงสัยอย่างยิ่งว่าใช้dsyevr/ dsyevxตอนแรก)
usεr11852พูดว่า Reinstate Monic

11

คำตอบนี้นำเสนอการจำลองแบบผลลัพธ์ของ @ whuber ใน Matlab และการสาธิตโดยตรงว่าสหสัมพันธ์เป็น "ส่วนประดิษฐ์" ของวิธีการใช้งาน SVD เลือกเครื่องหมายสำหรับส่วนประกอบ

ด้วยสายยาวของความคิดเห็นที่อาจทำให้สับสนฉันต้องการเน้นสำหรับผู้อ่านในอนาคตที่ฉันเห็นด้วยอย่างยิ่งกับสิ่งต่อไปนี้:

  1. ในบริบทของการสนทนานี้แน่นอนว่าเป็นตัวแปรสุ่มU
  2. คอลัมน์ของจะต้องมีความยาว1 ซึ่งหมายความว่าองค์ประกอบภายในแต่ละคอลัมน์ไม่เป็นอิสระ กำลังสองรวมเป็นหนึ่ง อย่างไรก็ตามสิ่งนี้ไม่ได้บ่งบอกถึงความสัมพันธ์ระหว่างU i 1และU j 1สำหรับi jและความสัมพันธ์ตัวอย่างควรมีขนาดเล็กสำหรับจำนวนมากN r e pU1Ui1Uj1ijNrepสุ่มดึง
  3. คอลัมน์ของจะต้องเป็นมุมฉาก ซึ่งหมายความว่าองค์ประกอบจากคอลัมน์ต่าง ๆ ไม่ได้เป็นอิสระ ผลิตภัณฑ์ดอทของพวกเขาคือศูนย์ อีกครั้งสิ่งนี้ไม่ได้บ่งบอกถึงความสัมพันธ์ระหว่างU i 1และUUUi1และความสัมพันธ์ตัวอย่างควรมีขนาดเล็กUj2

คำถามของฉันคือ: ทำไมเราเห็นสหสัมพันธ์สูงของแม้สำหรับจำนวนมากของการสุ่มจับN R E P = 1000 ?0.2Nrep=1000

นี่คือการจำลองแบบของตัวอย่าง @ whuber กับ , k = 2 , และn r e p = 1,000ใน Matlab:n=4k=2Nrep=1000

SVD

ด้านซ้ายเป็นเมทริกซ์สหสัมพันธ์ทางด้านขวา - แผนการกระจายคล้ายกับ @ whuber ข้อตกลงระหว่างการจำลองของเรานั้นสมบูรณ์แบบ

ตอนนี้ตามคำแนะนำอันชาญฉลาดโดย @ttnphns ฉันกำหนดสัญญาณสุ่มให้กับคอลัมน์ของเช่นหลังจากบรรทัดนี้:U

[U,S,V] = svd(X,0);

ฉันเพิ่มสองบรรทัดต่อไปนี้:

U(:,1) = U(:,1) * sign(randn(1));
U(:,2) = U(:,2) * sign(randn(1));

นี่คือผลลัพธ์ที่ได้:

SVD with random signs

ความสัมพันธ์ทั้งหมดหายไปอย่างที่ฉันคาดไว้ตั้งแต่ต้น !

11

Summarizing the whole issue, we see that strong correlations appear because LAPACK chooses signs for columns of U in a specific way that seems to depend on the first two data points. It is certainly not a bug because the decomposition is correct. But LAPACK essentially creates these "artifact" correlations by exploiting the freedom to assign signs. These correlations do not reflect the dependence of the elements of U; instead, they reflect the freedom in the SVD solution and a particular LAPACK's convention to fix it.

PS. Congratulations to @whuber for passing 100k reputation today!


If you want to see "high" correlations, use this version of SVD in place of stat in my code: stat <- function(x) { u <- svd(x)$u; as.vector(sign(runif(1) - 1/2)*u %*% diag(sign(diag(u)))) }. It chooses the signs of the columns of U in such a way as to create large correlations among (u11,u22,,ukk), and as such provides a further demonstration of why you might want to separate the concepts of correlation (of components of U) from independence (of the columns of U). The presence of these large correlations does not imply there's a bug in SVD!
whuber

I have just finished editing this answer, @whuber; I replaced svds by svd followed by a random sign choice for the columns of U. I agree with you: the high correlations were entirely due to the sign choice, as hypothesized by ttnphns. This provides a satisfactory answer to my question. Now, let's try to settle the disagreements! I agreed that the elements of U are random variables and that they are not independent. Would you agree that the figure in your answer was super-misleading and that using correlations of 0.2 as an argument in our previous debate was wrong?
amoeba says Reinstate Monica

I would not agree with that: the figure accurately shows the results of the default settings of SVD in R. I provided explanations for that behavior that are grounded in the algorithm and underlying theory. If any aspect of that is "super-misleading" I will, of course, strive to correct or clarify the problem, but at this point I am not aware of a specific problem to fix. You might be interested to note that the modified version provided in my previous comment to this question is capable of producing correlations around ±2/3, quite high indeed: there's nothing special about your 0.2.
whuber

1
@ttnphns: ประเด็นหลักของ whuber คือองค์ประกอบของ ยูไม่อิสระ องค์ประกอบภายในหนึ่งคอลัมน์ไม่เป็นอิสระเนื่องจากกำลังสองของพวกเขาจะต้องรวมเป็นหนึ่ง องค์ประกอบของคอลัมน์ที่แตกต่างกันไม่เป็นอิสระเพราะคอลัมน์จะต้องมีผลิตภัณฑ์จุดศูนย์ ดังนั้นหากคุณรู้องค์ประกอบทั้งหมดของคอลัมน์แรกนอกเหนือจากคอลัมน์สุดท้ายคุณสามารถคำนวณได้ หากคุณรู้จักองค์ประกอบทั้งหมดของคอลัมน์ที่สองนอกเหนือจากสององค์ประกอบสุดท้ายคุณสามารถคำนวณองค์ประกอบเหล่านั้นได้ ซึ่งหมายความว่าเป็นคำจำกัดความที่ไม่เป็นอิสระ
อะมีบาพูดว่า Reinstate Monica

1
โดยสังหรณ์ใจมันยุติธรรม ทันทีที่แกนหลักแรกถูกกำหนดในพื้นที่ส่วนที่เหลือราคา แกนจะได้รับอิสรภาพที่ลดลง ในกรณีของข้อมูล 2D พีซีตัวที่สอง (สุดท้าย) จะถูกผูกไว้ทั้งหมดยกเว้นเครื่องหมาย ฉันอยากจะเรียกมันว่าข้อ จำกัด ไม่ใช่การพึ่งพาในเชิงสถิติ
ttnphns

0

ตรวจสอบบรรทัดฐานของเวกเตอร์เอกพจน์ของคุณ U และ V มันคือ 1 ตามคำจำกัดความ คุณไม่จำเป็นต้องผ่าน SVD เพื่อให้ได้เมทริกซ์ที่แน่นอนเหมือนกับที่คุณพล็อตโดยเพียงแค่สร้างตัวแปรสุ่มสองตัวx และ Y ด้วยข้อ จำกัด ที่ผลรวมของกำลังสองของพวกเขาคือ 1:

x2+Y2=1

สมมติว่าค่าเฉลี่ยเป็นศูนย์จากนั้น

โอโวลต์[x,Y]=VaR[xY]=E[x2Y2]-E[xY]2

สิ่งนี้จะไม่เท่ากับศูนย์ คุณสามารถเสียบมาตรฐานปกติเข้าx และ Y เพื่อดูว่ามูลค่าความแปรปรวนร่วมที่คาดหวังที่นี่คืออะไร


Although this observation is pertinent, it addresses only interdependencies among the individual components of each column (and as such is included within the k(k+1)/2 independent constraints on U). The question that got all this started concerned dependencies between different columns of U: that's why so little attention has been paid to correlations within each column. Another (perhaps fruitful) way to look at this is to roll D into U and analyze the columns of UD, which are no longer normalized, but are still subject to k(k1)/2 constraints.
whuber

It's the columns of U that have length 1, not the rows (in case when U is not square, but has n rows and k columns with n>k). The columns of U have n elements, and we have been discussing two particular cases in this thread: in my question I suggested to consider n=1000, and in his answer @whuber chose to consider n=4. Your example with x2+y2=1 includes only two random variables, so it does not fit to the rest of the discussion here. If you could make a statement about what should be the correlation between two elements of one column of U, that would be interesting.
amoeba says Reinstate Monica

@Amoeba We can make Asksakal's example pertinent either by taking x to be the first component of a column of U and y to be the norm of the remaining components or by extending the example inductively to more variables. Unfortunately, the conclusion is incorrect: it is perfectly possible for x2+y2=1, each with zero mean, yet for Cov(x,y)=0. Take, for instance, x=cos(θ) and y=sin(θ) for θ uniformly distributed on [0,2π).
whuber

@whuber, yes, I agree. The mistake in Aksakal's argument is that individual elements of U are definitely not standard normal! If the sign of each column is randomized, then (in my simulation) the mean of each Uij is around 0 and the variance is around 1/n, which makes total sense -- add up n variances in one column and you will get n1/n=1, as required by the constraint. This is assuming the elements are uncorrelateed, which they seem to be.
amoeba says Reinstate Monica

1
@Aksakal, I invite you to run a simulation and see for yourself that they are indeed uncorrelated; just be sure to randomize the sign of each column of U on each iteration. If you want an intuitive proof, observe that there is nothing "special" about any particular row of X, meaning that if correlation between U11 and U21 is ρ, then it must be the same for any other pair. So we have n random variables with correlation matrix having all off-diagonal elements equal to ρ. Now, is ρ positive or negative? The problem doesn't seem to offer a choice, hence ρ=0.
amoeba says Reinstate Monica
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.