2D histogramlar için uyum iyiliği


19

Yıldız parametrelerini temsil eden iki veri setim var: gözlenen ve modellenen. Bu setlerle iki renkli diyagram (TCD) olarak adlandırılan şeyi yaratıyorum. Burada bir örnek görülebilir:

histogramas

Bir gözlenen veri ve varlık B modelinden çıkarılan verileri sadece bir tane var (siyah çizgiler aldırma, noktalar verileri temsil) bir şeması, ancak birçok farklı olarak üretebilir B istediğim gibi şemalar ve ne ihtiyacım olduğunu A'ya en uygun olanı tutmak için .

Yani ihtiyacım olan şey B diyagramının (model) A diyagramına (gözlemlenen) uygunluğunu kontrol etmenin güvenilir bir yoludur .

Şu anda yaptığım şey, her iki ekseni (her biri için 100 bölme) bölerek her diyagram için bir 2D histogram veya ızgara oluşturuyorum (buna böyle adlandırıyorum, belki daha uygun bir adı vardır) Sonra ızgaranın her hücresinden geçiyorum ve belirli bir hücre için A ve B arasındaki sayılardaki mutlak farkı buluyorum . Tüm hücreler içinde geçmiş sonra, her bir hücre için değerlerin toplamını ve uyum (iyiliğini temsil eden bir tek pozitif parametre ile sonuna kadar böylece gr f arası) , A ve B . Sıfıra en yakın olan, daha iyi uyum sağlar. Temel olarak, bu parametre şöyle görünür:gf

; burada,belirli bir hücre için ( i j ile belirlenen)Adiyagramındaki yıldız sayısıdırve b i j ,Biçin sayıdır.gf=ij|aijbij|aijijbij

Bu, o ne olduğu gibi her bir hücre görünüm sayım farklılıkları ızgara (Ben mutlak değerleri kullanarak değilim not oluşturmak bu görüntü ama bunu hesaplarken bunları kullanmak ) parametresini:(aijbij)(aijbij)gf

hess

Sorun, bu iyi bir tahmin edici olmayabilir tavsiye edilmiştir, çünkü parametre uygun olduğundan, bu uyum diğerinden daha iyi olduğunu söylemek dışında , gerçekten daha fazla bir şey söyleyemem.


Önemli :

(bunu getirdiğin için @PeterEllis'e teşekkürler)

1- B'deki noktalar, A'daki noktalar ile birebir ilişkili değildir . Bu en iyi uyum ararken akılda tutulması gereken önemli bir şeydir: noktaların sayısı A ve B olduğu değil mutlaka aynı ve uyum iyiliği testi de bu ihtiIafı ve küçültmek için çalışmalısınız.

2- her nokta sayısı B I uyum deneyin veri seti (model çıkış) A olduğu değil sabit.


Chi-Squared testinin bazı durumlarda kullanıldığını gördüm :

i(OiEi)2/EiOiEi

EiEi

Ayrıca, bazı insanların histogramların söz konusu olduğu durumlarda Poisson testinin günlük olması olasılığını önerdiğini okudum . Eğer bu doğruysa , birisi bu testi bu özel durum için nasıl kullanacağımı öğretebilirse gerçekten çok memnun olurum (unutmayın, istatistik bilgim oldukça zayıf, bu yüzden lütfen olabildiğince basit tutun :)


B'deki noktaların A'daki noktalarla bire bir ilişkisi var mı (örn. Her biri belirli bir yıldızdır) veya bundan daha soyut mu?
Peter Ellis

Merhaba @PeterEllis, hiçbir noktalar B noktaları ile bire bir ilişkili değildir A . Aslında en uygun ararken akılda tutulması gereken bir diğer önemli şey olduğunu: noktaların sayısı A ve B olan değil mutlaka eşit.
Gabriel

Merhaba - ilginç bir soru, doğru bir cevap yazmaya çalışacağım. B'nin her sürümü aynı sayıda puan mıdır yoksa farklı mıdır?
Peter Ellis

Onlar da değişir, sadece A'daki nokta sayısı sabit kalır. @PeterEllis'i bulmama yardım edersen bana ne kadar yardım edeceğine dair hiçbir fikrin yok.
Gabriel

Bu soru bu konuya güçlü bir benzerlik taşıyor: stats.stackexchange.com/questions/71036/… Nerede bir cevap verdim.
L Fischman

Yanıtlar:


14

Tamam, bu cevabı kapsamlı bir şekilde gözden geçirdim. Verilerinizi bölmek ve her bölmedeki sayıları karşılaştırmak yerine, 2d çekirdek yoğunluğu tahminine uymak ve bunları karşılaştırmak için orijinal cevabımda gömdüğüm öneri çok daha iyi bir fikir. Daha da iyisi, Tarn Duong'un R için ks paketinde bunu pasta olarak kolaylaştıran bir kde.test () işlevi var .

Daha fazla ayrıntı ve değiştirebileceğiniz argümanlar için kde.test belgelerine bakın. Ama temelde tam olarak ne istediğinizi yapar. Döndürdüğü p değeri, aynı dağıtımdan üretildikleri sıfır hipotezi altında karşılaştırdığınız iki veri kümesini oluşturma olasılığıdır. P değeri ne kadar yüksek olursa, A ve B arasındaki uyum o kadar iyi olur. B1 ve A'nın farklı olduğunu kolayca seçtiği, ancak B2 ve A'nın makul olarak aynı olduğu aşağıdaki örneğime bakın (bu şekilde üretildiler) .

# generate some data that at least looks a bit similar
generate <- function(n, displ=1, perturb=1){
    BV <- rnorm(n, 1*displ, 0.4*perturb)
    UB <- -2*displ + BV + exp(rnorm(n,0,.3*perturb))
    data.frame(BV, UB)
}
set.seed(100)
A <- generate(300)
B1 <- generate(500, 0.9, 1.2)
B2 <- generate(100, 1, 1)
AandB <- rbind(A,B1, B2)
AandB$type <- rep(c("A", "B1", "B2"), c(300,500,100))

# plot
p <- ggplot(AandB, aes(x=BV, y=UB)) + facet_grid(~type) + 
    geom_smooth() +     scale_y_reverse() + theme_grey(9)
win.graph(7,3)
p +geom_point(size=.7)

resim açıklamasını buraya girin

> library(ks)
> kde.test(x1=as.matrix(A), x2=as.matrix(B1))$pvalue
[1] 2.213532e-05
> kde.test(x1=as.matrix(A), x2=as.matrix(B2))$pvalue
[1] 0.5769637

AŞAĞIDAKİ ORİJİNAL CEVAPIM, SADECE DUYU YAPMAYACAK BAŞKA BİRİNDEN BAĞLANTILARIN SADECE TUTULDU

İlk olarak, bununla ilgili başka yollar da olabilir.

Justel ve arkadaşları , kolmogorov -Smirnov uyum iyiliği testinin, sizin durumunuzda kullanılabileceğini düşündüğüm, modellenmiş her veri kümesinin orijinaline ne kadar iyi uyduğunu test etmek için çok değişkenli bir uzantı ortaya koymuştur. Ben bunun bir uygulama bulamadı (örneğin R) ama belki yeterince sert görünmüyordu.

Alternatif olarak, hem orijinal verilere hem de her bir modellenmiş veri kümesine bir kopula yerleştirerek ve daha sonra bu modelleri karşılaştırarak bunu yapmanın bir yolu olabilir . Bu yaklaşımın R ve diğer yerlerde uygulamaları var ama bunlara özellikle aşina değilim, bu yüzden denemedim.

Ancak sorunuzu doğrudan ele almak için attığınız yaklaşım makul bir yaklaşımdır. Birkaç nokta kendilerini göstermektedir:

  • Veri kümeniz göründüğünden daha büyük değilse, 100 x 100 ızgarasının çok fazla kutu olduğunu düşünüyorum. Sezgisel olarak, çeşitli veri kümelerinin, yalnızca kutularınızın hassasiyeti, veri yoğunluğu yüksek olsa bile, içinde düşük sayıda nokta bulunan çok sayıda bölmeniz olduğu anlamına geldiklerinden daha farklı olduğuna karar verebilirim. Ancak bu sonuçta bir yargı meselesidir. Sonuçlarınızı binning'e farklı yaklaşımlarla kesinlikle kontrol ederim.

  • Binning'inizi yaptıktan ve verilerinizi (aslında) iki sütunlu bir sayım durum tablosuna ve bölme sayısına eşit sayıda satır sayısına (durumunuzda 10.000) dönüştürdüğünüzde, iki sütunu karşılaştırma konusunda standart bir sorununuz vardır. sayım. Bir Chi kare testi ya da bir çeşit Poisson modeline uymak işe yarayacaktır, ancak dediğiniz gibi çok sayıda sıfır sayımı nedeniyle gariplik var. Bu modellerin her ikisi de normalde, beklenen sayımların tersi ile ağırlıklandırılan farkın karelerinin toplamını en aza indirerek uygundur; bu sıfıra yaklaştığında sorunlara neden olabilir.

Düzenle - bu cevabın geri kalanında artık uygun bir yaklaşım olduğuna inanmıyorum.

ng×2

ng×2ng

Bazı verileri sizinki gibi görünecek şekilde simüle ettim ve bu yaklaşımın "B" veri setlerimden hangisinin "A" ile aynı işlemden üretildiğini ve hangilerinin biraz farklı olduğunu belirlemede oldukça etkili olduğunu buldum. Çıplak gözlerden kesinlikle daha etkilidir.

  • ng×2başlangıçta önerdiğiniz gibi mutlak farkların veya kare farkların toplamını kullanırsanız bir sorun). Bununla birlikte, B sürümlerinizin her birinin farklı sayıda puanı olması önemlidir. Temel olarak, daha büyük B veri kümelerinin daha düşük p-değerleri döndürme eğilimi olacaktır. Bu soruna birkaç olası çözüm düşünebilirim. 1. Tüm B veri kümelerinizi, bu boyuttan daha büyük olan tüm B kümelerinden rastgele bir örnek alarak, aynı boyutta (B kümelerinizin en küçük boyutu) aynı boyutta küçültebilirsiniz. 2. Önce B setlerinizin her birine iki boyutlu bir çekirdek yoğunluğu tahmini sığdırabilir ve daha sonra bu tahmindeki verileri eşit boyutlarda simüle edebilirsiniz. 3. p-değerlerinin boyuta olan ilişkisini belirlemek için bir çeşit simülasyon kullanabilir ve "düzeltmek" için kullanabilirsiniz. karşılaştırılabilir olması için yukarıdaki prosedürden aldığınız p-değerleri. Muhtemelen başka alternatifler de vardır. Hangisini yapacağınız, B verilerinin nasıl oluşturulduğuna, boyutların ne kadar farklı olduğuna vb.

Umarım yardımcı olur.


Birkaç küçük yazım hatası düzeltmesi yaptım; Umarım umursamazsın. Özellikle son mermi noktasında, ana fikirleri biraz daha belirgin bir şekilde ortaya çıkarmak için bir şeyleri biçimlendirmenin bir yolu olabilir. Ama ben de aşırı hevesli olmak istemedim. Şerefe. :)
kardinal

sorun yok. Son mermi noktasımı biçimlendirmenin iyi bir yoluyla mücadele ettim - istediğim, bir mermi noktasının altındaki numaralı liste hiyerarşisiydi. Ama bunu nasıl yapacağımı bulamadım.
Peter Ellis

Evet, ben de bununla kısaca uğraştım, çünkü istediğin gibi görünüyordu. Bunu nasıl yapacağımı hızlı bir şekilde anlayamadım ve düzende toptan değişiklikler yapmak için çok tereddüt ettim, bu yüzden bunun yerine sadece yorum yapacağımı düşündüm. :)
kardinal

1
Wilcox'un kitabını R kullanan genel istatistik metni olarak öneririm (yanıt istatistiklerime bakın.stackexchange.com/questions/25632/… ). Fisher'ın tam metnini kapsamasa da, web üzerindeki belirli metin hakkında, benzer testlerde bu kitapta arka planınız varsa daha anlamlı olacak yeterli ayrıntı var. Bu özel uyum iyiliği problemi hakkında daha iyi bir metin olabilir, ancak Wilcox'un kitabı sizi hızlı bir şekilde yüksek seviyeye taşıyan genel bir giriş olarak harika olduğunu düşünüyorum.
Peter Ellis

1
Vay. Bu konudaki halkı cevapladın. Bir "stackexchange en iyisi" olsaydı, bu onun içinde olurdu.
Colin K
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.