Bir MCMC örneğinden Modun güvenilirliği


12

John Kruschke, Does Bayesian Veri Analizi adlı kitabında, R'den JAGS kullanırken

... bir MCMC örneğindeki modun tahmini oldukça kararsız olabilir çünkü tahmin, MCMC örneğindeki rastgele tümseklere ve dalgalanmalara duyarlı olabilen bir düzeltme algoritmasına dayanır. ( Bayesian Veri Analizi Yapma , sayfa 205, bölüm 8.2.5.1)

Metropolis algoritmasını ve Gibbs örneklemesi gibi kesin formları kavramış olsam da, aynı zamanda düzeltilmiş olan düzeltme algoritmasına ve neden MCMC örneğinden mod tahmininin kararsız olduğu anlamına gelmiyor. Düzeltme algoritmasının ne yaptığına ve modun tahminini neden kararsız hale getirdiğine dair sezgisel bir fikir verebilir mi?


2
John Kruschke, çekirdek yoğunluğu tahminine dayanan mod tahmini algoritması hakkında konuşuyor.
Andrey Kolyadin


Bu istatistik alanında yeniyken yanılmıyorsam, JAGS, olasılık yoğunluğu fonksiyonundan ziyade posterior dağılımdan bir dizi örnek çıkarır, böylece çekirdek yoğunluğu tahmininin içine gireceğinden emin olmaz. Gerçi bağlantı için teşekkürler.
Morgan Ball

Ben muhtemelen bu herhangi bir belirli değerin birden fazla olmayabilir sürekli bir değişken büyük bir örnek bir mod elde ile daha fazla olduğunu düşünüyorum ve böylece örnek (veya düzgün) grup zorunda.
Morgan Ball

1
Çekirdek yoğunluğu tahmininde modu maksimum yoğunlukta bir değer olarak elde edebilirsiniz. (En azından yaptığım şey bu ve eğer yanılmıyorsam J. Kruschke örneklerinde aynı yaklaşımı kullanır)
Andrey Kolyadin

Yanıtlar:


8

Elimdeki kitabım yok, bu yüzden Kruschke'nin hangi yumuşatma yöntemini kullandığından emin değilim, ancak sezgi için 0.1'den 1.0'a kadar çeşitli bant genişlikleri kullanılarak Gauss çekirdek yoğunluğu tahminleriyle birlikte standart bir normalden 100 numunenin bu grafiğini düşünün . (Kısaca, Gauss KDE'leri bir çeşit düzgünleştirilmiş histogramdır: Her bir veri noktası için bir Gauss ekleyerek, gözlemlenen değerde ortalama ile yoğunluğu tahmin ederler.)

Düzgünleştirmenin tek modlu bir dağıtım oluşturmasına rağmen, modun genellikle bilinen 0 değerinin altında olduğunu görebilirsiniz.

resim açıklamasını buraya girin

Dahası, burada aynı örneği kullanarak yoğunluğu tahmin etmek için kullanılan çekirdek bant genişliği ile tahmini modun (y ekseni) bir grafiği. Umarım bu, tahminin düzeltme parametreleriyle nasıl değiştiği hakkında bazı sezgiler sağlar.

resim açıklamasını buraya girin

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Wed Feb  1 09:35:51 2017

@author: seaneaster
"""

import numpy as np
from matplotlib import pylab as plt
from sklearn.neighbors import KernelDensity

REAL_MODE = 0
np.random.seed(123)

def estimate_mode(X, bandwidth = 0.75):
    kde = KernelDensity(kernel = 'gaussian', bandwidth = bandwidth).fit(X)
    u = np.linspace(-3,3,num=1000)[:, np.newaxis]
    log_density = kde.score_samples(u)
    return u[np.argmax(log_density)]

X = np.random.normal(REAL_MODE, size = 100)[:, np.newaxis] # keeping to standard normal

bandwidths = np.linspace(0.1, 1., num = 8)

plt.figure(0)
plt.hist(X, bins = 100, normed = True, alpha = 0.25)

for bandwidth in bandwidths:
    kde = KernelDensity(kernel = 'gaussian', bandwidth = bandwidth).fit(X)
    u = np.linspace(-3,3,num=1000)[:, np.newaxis]
    log_density = kde.score_samples(u)
    plt.plot(u, np.exp(log_density))

bandwidths = np.linspace(0.1, 3., num = 100)
modes = [estimate_mode(X, bandwidth) for bandwidth in bandwidths]
plt.figure(1)
plt.plot(bandwidths, np.array(modes))

5

Sean Easter güzel bir cevap verdi; aslında Kruschke'nin kitabıyla birlikte gelen R senaryoları tarafından nasıl yapılır. plotPost()İşlev adlandırılan R komut tanımlanır DBDA2E-utilities.R. Tahmini modu görüntüler. İşlev tanımının içinde şu iki satır vardır:

mcmcDensity = density(paramSampleVec)
mo = mcmcDensity$x[which.max(mcmcDensity$y)]

density()Fonksiyon ana istatistiklerini R paketin ve uygular Sean Easter tarif edilen türden bir çekirdek yoğunluğu filtresi ile donatılmıştır. Düzeltme çekirdeğinin bant genişliği ve kullanılacak çekirdek türü için isteğe bağlı argümanlar vardır. Varsayılan olarak bir Gauss çekirdeğine sahiptir ve hoş bir bant genişliği bulmak için dahili bir sihire sahiptir. density()İşlev adlı bir bileşeni ile bir nesne döndürür yçeşitli değerlerde yumuşatılmış yoğunlukları vardır x. Yukarıdaki ikinci kod satırı , maksimum olan xdeğeri bulur y.

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.