Soru değişkenler arasında "temel [doğrusal] ilişkilerin belirlenmesi" hakkında sorular sorar.
İlişkileri saptamanın hızlı ve kolay yolu , favori yazılımınızı kullanarak bu değişkenlere karşı başka bir değişkeni (bir sabit, hatta) kullanmaktır: herhangi bir iyi regresyon prosedürü, eşitliğini tespit eder ve teşhis eder. (Regresyon sonuçlarına bakmak bile zahmet etmeyecek: regresyon matrisini oluşturmanın ve analiz etmenin yararlı bir yan etkisine güveniyoruz.)
Eşdoğrusallığın tespit edildiğini varsayarsak, sonra ne olacak? Temel Bileşenler Analizi (PCA) tam olarak gerekli olan şeydir: en küçük bileşenleri doğrusal-doğrusal ilişkilere karşılık gelir. Bu ilişkiler doğrudan orijinal değişkenlerin doğrusal kombinasyonları olan "yüklemelerden" doğrudan okunabilir. Küçük yükler (yani, küçük özdeğerlerle ilişkilendirilenler), collinsearities'e karşılık gelir. bir öz değeri mükemmel bir doğrusal ilişkiye karşılık gelir. Hala en büyüğünden çok daha küçük olan özdeğerler, yaklaşık doğrusal ilişkilere karşılık gelir.0
("Küçük" bir yükün ne olduğunu belirleme ile ilgili bir sanat ve oldukça fazla literatür var. Bağımlı bir değişkeni modellemek için, bileşenleri tanımlamak için - PCA'daki bağımsız değişkenlere dahil etmeyi öneriyorum. boyutları - bağımlı değişken önemli bir rol oynar. Bu açıdan "küçük" herhangi bir bileşenden çok daha küçük anlamına gelir.)
Bazı örneklere bakalım. (Bu R
hesaplamalar ve çizim için kullanılırlar.) PCA'yı gerçekleştirme işlevi, küçük bileşenler arayın, bunları işaretleyin ve aralarındaki doğrusal ilişkileri döndürün.
pca <- function(x, threshold, ...) {
fit <- princomp(x)
#
# Compute the relations among "small" components.
#
if(missing(threshold)) threshold <- max(fit$sdev) / ncol(x)
i <- which(fit$sdev < threshold)
relations <- fit$loadings[, i, drop=FALSE]
relations <- round(t(t(relations) / apply(relations, 2, max)), digits=2)
#
# Plot the loadings, highlighting those for the small components.
#
matplot(x, pch=1, cex=.8, col="Gray", xlab="Observation", ylab="Value", ...)
suppressWarnings(matplot(x %*% relations, pch=19, col="#e0404080", add=TRUE))
return(t(relations))
}
Bunu bazı rasgele verilere uygulayalım. Bunlar dört değişken üzerine inşa edilmiştir ( sorunun ve ). İşte diğerlerinin verilen lineer bir kombinasyonu olarak hesaplamak için küçük bir fonksiyon . Daha sonra iid Normalde dağıtılmış değerleri beş değişkenin tümüne ekler (çoklu doğrusallık sadece yaklaşık olduğunda ve tam olmadığında prosedürün ne kadar iyi performans gösterdiğini görmek için).B,C,D,EA
process <- function(z, beta, sd, ...) {
x <- z %*% beta; colnames(x) <- "A"
pca(cbind(x, z + rnorm(length(x), sd=sd)), ...)
}
Hepimiz gitmeye hazırız: sadece ve bu prosedürleri uygulamak için kalır . Soruda açıklanan iki senaryoyu kullanıyorum: (artı her birinde bazı hatalar) ve (artı her birinde bazı hatalar). İlk önce, PCA'nın neredeyse her zaman merkezlenmiş verilere uygulandığını unutmayın; bu nedenle bu benzetilmiş veriler kullanarak ortalanır (ancak başka bir şekilde ölçeklendirilmez) .B,…,EA=B+C+D+EA=B+(C+D)/2+Esweep
n.obs <- 80 # Number of cases
n.vars <- 4 # Number of independent variables
set.seed(17)
z <- matrix(rnorm(n.obs*(n.vars)), ncol=n.vars)
z.mean <- apply(z, 2, mean)
z <- sweep(z, 2, z.mean)
colnames(z) <- c("B","C","D","E") # Optional; modify to match `n.vars` in length
Burada iki senaryo ve her birine üç hata seviyesi uygulandı. orijinal değişkenleri değişiklik yapılmadan korunur: sadece ve hata terimleri değişir.B,…,EA
Sol üst panel ile ilgili çıktı
A B C D E
Comp.5 1 -1 -1 -1 -1
Bu, sürekli olarak , mükemmel bir çoklu doğrusallık sergileyen kırmızı nokta sırasının, : tam olarak belirtilenin kombinasyonundan oluştuğunu .00≈A−B−C−D−E
Üst orta panelin çıkışı
A B C D E
Comp.5 1 -0.95 -1.03 -0.98 -1.02
Katsayılar hala beklediklerimize yakın, ancak ortaya konan hata nedeniyle tam olarak aynı değiller. Dört boyutlu hiper düzlemi ima ettiği beş boyutlu uzayda kalınlaştırdı ve tahmin edilen yönü biraz eğdi. Daha fazla hata ile kalınlaşma, noktaların orijinal yayılmasıyla karşılaştırılabilir hale gelir ve bu da hiper düzlemi tahmin etmek neredeyse imkansız hale getirir. Şimdi (sağ üst panelde) katsayılar(A,B,C,D,E)
A B C D E
Comp.5 1 -1.33 -0.77 -0.74 -1.07
Bu biraz değiştirdi ama yine de altta yatan temel ilişki yansıtacak olan asal çıkarıldı (bilinmeyen) hata değerlerini belirtmektedir.A′=B′+C′+D′+E′
Alt sıra aynı şekilde yorumlanır ve çıktısı benzer şekilde katsayılarını yansıtır .1,1/2,1/2,1
Uygulamada, genellikle bir değişkenin diğerlerinin açık bir birleşimi olarak seçildiği durum söz konusu değildir: tüm katsayılar karşılaştırılabilir boyutlarda ve değişken işaretlerde olabilir. Ayrıca, birden fazla ilişki boyutu olduğunda, onları belirtmenin benzersiz bir yolu yoktur: bu ilişkilerin faydalı bir temelini belirlemek için daha fazla analiz (satır azaltma gibi) gereklidir. Dünya böyle işler: Söyleyebileceğiniz tek şey, PCA tarafından üretilen bu belirli kombinasyonların verilerdeki neredeyse hiçbir değişikliğe karşılık gelmediğidir. Bununla başa çıkmak için, bazı insanlar ne tür olursa olsun, regresyonda veya daha sonraki analizlerde doğrudan en büyük ("temel") bileşenleri, regresyondaki bağımsız değişkenler olarak kullanırlar. Bunu yaparsanız, önce bağımlı değişkeni değişken kümesinden çıkarmak ve PCA'yı tekrar yapmak için ihmal etmeyin!
İşte bu rakamı çoğaltacak kod:
par(mfrow=c(2,3))
beta <- c(1,1,1,1) # Also can be a matrix with `n.obs` rows: try it!
process(z, beta, sd=0, main="A=B+C+D+E; No error")
process(z, beta, sd=1/10, main="A=B+C+D+E; Small error")
process(z, beta, sd=1/3, threshold=2/3, main="A=B+C+D+E; Large error")
beta <- c(1,1/2,1/2,1)
process(z, beta, sd=0, main="A=B+(C+D)/2+E; No error")
process(z, beta, sd=1/10, main="A=B+(C+D)/2+E; Small error")
process(z, beta, sd=1/3, threshold=2/3, main="A=B+(C+D)/2+E; Large error")
(Yalnızca tek bir bileşeni görüntülemek için büyük hata durumlarında eşik değerine sahip olmam gerekiyordu: bu değeri parametre olarak vermenin nedeni budur process
.)
User ttnphns, dikkatimizi yakından ilgili bir konuya yönlendirmiştir. Cevaplarından biri (JM tarafından) burada açıklanan yaklaşımı önerir.