Metropolis-Hastings- algoritmi on näytteenottoalgoritmi , jota käytetään pääasiassa monimutkaisiin jakelufunktioihin . Se on jossain määrin samanlainen kuin varianssinäytteenottoalgoritmi , mutta tässä apujakaumafunktio muuttuu ajan myötä. Algoritmin julkaisi ensimmäisenä Nicholas Metropolis vuonna 1953 , ja sitten C. Hastings yleisti vuonna 1970 . Gibbs-näytteenotto on Metropolis-Hastings-algoritmin erikoistapaus, ja se on suositumpi yksinkertaisuutensa ja nopeudensa vuoksi, vaikkakin harvemmin sovellettavissa.
Metropolis-Hastings-algoritmin avulla voit ottaa näytteitä mistä tahansa jakelufunktiosta. Se perustuu Markov-ketjun luomiseen, eli jokaisessa algoritmin vaiheessa valittu uusi arvo riippuu vain edellisestä . Algoritmi käyttää apujakaumafunktiota riippuen , jolle on helppo muodostaa näyte (esimerkiksi normaalijakauma ). Jokaisessa vaiheessa tälle funktiolle luodaan satunnainen arvo . Siis todennäköisyydellä
(tai todennäköisyydellä 1, jos ), valittu arvo hyväksytään uudeksi: , muuten vanha jätetään: .
Esimerkiksi jos otamme normaalijakauman funktion apufunktiona, niin
Tällainen funktio tuottaa uuden arvon riippuen edellisen vaiheen arvosta. Aluksi Metropolis-algoritmi vaati, että apufunktio on symmetrinen: , mutta Hastingsin yleistys poistaa tämän rajoituksen.
Oletetaan, että olemme jo valinneet satunnaisen arvon . Seuraavan arvon valitsemiseksi hanki ensin satunnainen arvo funktiolle . Sitten löydämme tuotteen , missä
on väliarvon ja edellisen todennäköisyyksien suhde, ja
on todennäköisyyksien suhde toiselle tai takaisin. Jos se on symmetrinen, niin toinen kerroin on yhtä suuri kuin 1. Satunnaisarvo uudessa vaiheessa valitaan säännön mukaan:
Algoritmi alkaa satunnaisesta arvosta ja suorittaa ensin "tyhjäkäynnillä" useita vaiheita "unohdakseen" alkuarvon.
Algoritmi toimii parhaiten, kun apufunktion muoto on lähellä kohdefunktion muotoa . Tämä on kuitenkin usein mahdotonta saavuttaa etukäteen. Tämän ongelman ratkaisemiseksi aputoiminto viritetään algoritmin valmisteluvaiheessa. Säädä esimerkiksi normaalijakaumaa varten sen parametria niin, että "hyväksyttyjen" satunnaisarvojen osuus (eli ne, joille ) on lähellä 60%. Jos se on liian pieni, arvot ovat liian lähellä ja hyväksymisaste on korkea. Jos se on liian suuri, niin suurella todennäköisyydellä uudet arvot hyppäävät ulos pienen todennäköisyyden vyöhykkeille , minkä vuoksi hyväksyttyjen arvojen osuus on pieni.