Büyük N, ayrık veriler ve birçok değişkeniniz olduğunda, dağılım grafiği matrisinden nasıl bilgi alınır?


10

Meme kanseri veri kümesiyle oynuyorum ve hangilerinin (kırmızı) sınıfını malignant(mavi) tahmin etmede en fazla etkiye sahip olduğu hakkında bir fikir edinmek için tüm niteliklerin bir dağılım grafiğini oluşturdum benign.

Satırın x eksenini ve sütunun y eksenini temsil ettiğini anlıyorum, ancak veriler veya bu dağılım grafiğindeki nitelikler hakkında hangi gözlemleri yapabileceğimi göremiyorum.

Bu dağılım grafiğindeki verileri yorumlamak / gözlemlemek için bazı yardımlar arıyorum veya bu verileri görselleştirmek için başka bir görselleştirme kullanmalıyım.

resim açıklamasını buraya girin

Kullandığım R kodu

link   <- "http://www.cs.iastate.edu/~cs573x/labs/lab1/breast-cancer-wisconsin.arff"
breast <- read.arff(link)
cols   <- character(nrow(breast))
cols[] <- "black"
cols[breast$class == 2] <- "red"
cols[breast$class == 4] <- "blue"
pairs(breast, col=cols)

Haklısın: Bunda çok şey görmek zor. Tüm değişkenleriniz göreceli olarak az sayıda kategoriyle ayrık göründüğü için, her bir belirgin şekilde görülebilir sembolü oluşturmak için kaç sembolün yığıldığını belirlemek imkansızdır. Bu, herhangi bir şeyi değerlendirmede çok az değerli olan bu özel imajı yapar.
whuber

1
Ben de öyle düşündüm. Kutulu bir barplot çizmeye çalıştım ama hangi özniteliğin sınıf üzerinde en fazla etkiye sahip olduğunu görmede yararlı olmaz ...? Ne tür görselleştirmenin bazı anlamlı bilgiler vereceği konusunda yardım aramak.
birdy

2
İki renkli saçılımınız, puan yığınlarınızı değiştirirseniz (gürültü eklerseniz) mantıklı olabilir.
ttnphns

@ttnphns "Puan yığınlarını değiştir" ile ne demek istediğini anlamıyorum
birdy

1
jitter, grafiğinizi düzenlemek anlamına gelir; böylece, bir veri noktasının diğerinin üzerinde görünmesini engellememek için üstteki noktalar birbirinin yanına yerleştirilir. genellikle R çizim fonksiyonlarında kullanılır.
OFish

Yanıtlar:


3

Bunun sizin için herhangi bir yardımcı olup olmadığından emin değilim, ancak birincil EDA için tabplotpaketi gerçekten seviyorum . Verilerinizde hangi olası korelasyonların olabileceği konusunda iyi bir fikir verir.

install.packages("tabplot")
tableplot(breast) # gives you the unsorted image below
tableplot(breast, sortCol="class") # gives you a sorted image according to class

sıralanmamış arsa sıralı arsa


bu tabplot nasıl yorumlanır? İkinci sekmeden 2, 3, 4 ve 7 numaralı sütunlar birbirine çok benziyor mu?
birdy

Bu bir tür bir ödev / ödev için mi? Öyleyse, değerlendirmelerle ilgili yardım alma kuralları vb. İçin metalara bakın. Kısa cevabım: a) Sütunlardaki tüm farklı değerlerin ne anlama geldiğine dair hiçbir fikrim yok, çünkü veri kümesi açıklamasını incelemedim, b) basitçe gördüğümü tarif etmek isteseydim, diyorum ki: sınıf 4 gibi görünüyor her bir sütunun / değişkenin daha yüksek değerleriyle ve tersi ile ilişkilidir.
OFish

6

Dağılım grafiği matrisinizden kullanılabilir bilgileri çıkarmayı zor veya imkansız kılan bir takım sorunlar vardır.

Birlikte görüntülenen çok fazla değişkeniniz var. Dağılım grafiği matrisinde çok sayıda değişken olduğunda, her grafik kullanışlı olamayacak kadar küçük olur. Dikkat edilmesi gereken şey, alanın boşa harcanan birçok parselin çoğaltılmasıdır. Ayrıca, her kombinasyonu görmek istemenize rağmen, hepsini birlikte çizmeniz gerekmez. Bir dağılım grafiği matrisini dört veya beş kişilik küçük bloklara bölebileceğinize dikkat edin (kullanışlı bir şekilde görselleştirilebilen bir sayı). Her blok için bir tane olmak üzere birden fazla çizim yapmanız yeterlidir.

resim açıklamasını buraya girin

Yana Uzayda ayrı noktalarda çok fazla veri var , onlar birbirinin üzerine yığılması sonunda. Böylece, her bir konumda kaç nokta olduğunu göremezsiniz. Bununla başa çıkmanıza yardımcı olacak birkaç numara var.

  1. Birincisi titremektir . Değişme, veri kümenizdeki değerlere az miktarda gürültü eklemek anlamına gelir. Gürültü, artı veya eksi küçük bir miktar üzerinde merkezlenmiş düzgün bir dağılımdan alınır. En uygun miktarı belirlemek için algoritmalar vardır, ancak verileriniz bir birimden on kadar tüm birimlerde geldiğinden, iyi bir seçim gibi görünüyor. .5
  2. Çok fazla veriyle, titreşim bile patterlerin fark edilmesini zorlaştıracaktır. Bunu sağlamak için yüksek derecede doygun, ancak büyük ölçüde şeffaf olan renkler kullanabilirsiniz . Üst üste yığılmış çok fazla veri olduğunda, renk koyulaşır ve çok az yoğunluk olduğunda, renk daha açık olur.
  3. Saydamlığın çalışması için, verilerinizi görüntülemek için düz sembollere ihtiyacınız olacaktır , oysa R varsayılan olarak içi boş daireler kullanır.

Bu stratejileri kullanarak, bazı örnek R kodu ve yapılan grafikler:

# the alpha argument in rgb() lets you set the transparency
cols2 = c(rgb(red=255, green=0, blue=0,   alpha=50, maxColorValue=255),
          rgb(red=0,   green=0, blue=255, alpha=50, maxColorValue=255) )
cols2 = ifelse(breast$class==2, cols2[1], cols2[2])
# here we jitter the data
set.seed(6141)  # this makes the example exactly reproducible
jbreast = apply(breast[,1:9], 2, FUN=function(x){ jitter(x, amount=.5) })
jbreast = cbind(jbreast, class=breast[,10])  # the class variable is not jittered

windows()  # the 1st 5 variables, using pch=16
  pairs(jbreast[,1:5], col=cols2, pch=16)

resim açıklamasını buraya girin

windows()  # the 2nd 5 variables
  pairs(jbreast[,6:10], col=cols2, pch=16)

resim açıklamasını buraya girin

windows()  # to match up the 1st & 2nd sets requires more coding
  layout(matrix(1:25, nrow=5, byrow=T))
  par(mar=c(.5,.5,.5,.5), oma=c(2,2,2,2))
  for(i in 1:5){
    for(j in 6:10){
      plot(jbreast[,j], jbreast[,i], col=cols2, pch=16, 
           axes=F, main="", xlab="", ylab="")
      box()
      if(j==6 ){ mtext(colnames(jbreast)[i], side=2, cex=.7, line=1) }
      if(i==5 ){ mtext(colnames(jbreast)[j], side=1, cex=.7, line=1) }
      if(j==10){ axis(side=4, seq(2,10,2), cex.axis=.8) }
      if(i==1 ){ axis(side=3, seq(2,10,2), cex.axis=.8) }
    }
  }

resim açıklamasını buraya girin


5

Tek bir arsada 3-4'ten fazla boyutu görselleştirmek zordur. Bir seçenek, verileri sıkıştırmak ve daha sonra ana boyutlarda görselleştirmek için temel bileşenler analizini (PCA) kullanmak olacaktır. Bunu prcompsözdizimsel olarak kolaylaştıran R'de (ve temel işlevde) birkaç farklı paket vardır ( bkz. CRAN ); grafikleri, yüklemeleri yorumlamak başka bir hikaye, ama bence 10 değişken sıralı dağılım grafiği matrisinden daha kolay.

resim açıklamasını buraya girin


PCA ile ilgili öneriniz için teşekkürler. Bunu bilmiyordum. Gönderdiğiniz resmi nasıl yorumlayabilirim? Bu, bir grupta bir araya toplanan tüm özelliklerin bir öneme sahip olacağı anlamına mı geliyor?
birdy
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.