Yritän ymmärtää kokeilua tämän perusteella paperi , erityisesti kohta 5.2.

Asiakirjassa he ehdottavat uutta algoritmia harvojen matriisien log-determinantin laskemiseksi, ja osassa 5 testataan sitä luomallaan tietojoukolla.

He haluavat testata sen synteettisellä tietojoukolla, joten he luovat harvan matriisin, jonka koko on 5000×5000 ja jonka tarkkuusmatriisin (kovarianssimatriisin käänteinen) parametroi $ \ rho = -0,22 $ . Paperin mukaan jokaisella solmulla on 4 naapuria, joiden osittainen korrelaatio on $ \ rho $ . Sitten he käyttävät Gibbs-sampleria ottaakseen yhden näytteen matriisin J. kuvaamasta monimuuttujaisesta gaussiajakaumasta. näyte, lasken lokitodennäköisyyden seuraavasti: $$ \ log (x | \ rho) = \ log \ det J (\ rho) – x ^ TJ (\ rho) x + G $$ . ja piirrän arvot kuten kuvassa 2.

Jos ymmärrykseni on oikein, he arvioivat vain yhden näytteen antaman log-todennäköisyyden? Ymmärrän, että kuvan 2 juoni on seuraava kaava, joka lasketaan vain yhdelle näytteelle? Laskin lokitodennäköisyyden yleensä tietojoukolle, ei vain yhdelle näytteelle.

Kysymykseni on seuraava: mitä tarkalleen tarkoittaa $ \ rho $ ja miten luon $ J (\ rho) $ ja näyte siitä? (ts. python-paketilla? muuten mikä on algoritmi?)?

Mielestäni taustalla on oletus, että $ \ log \ det J (\ rho ) $ kahdelle eri näytteelle $ J (\ rho) $ on sama, miksi?

Kävin itse asiassa etsimässä paljon siteerattuun -viitekirjaan , joka on erittäin hyvä kirja GMRF: stä, mutta en ole löytänyt selvää yhteyttä yhden parametrin $ \ rho $ ja heidän luomansa matriisi. GMRF-parametrien parametrointi on kuvattu osassa 2.7, sivu 87. Siellä yksittäistä parametria ei koskaan käytetä, ja parametriavaruus kuvataan tosiasiallisesti 2-ulotteisella vektorilla $ \ Theta $ :

$$ \ pi (x | \ Theta) \ propto exp (\ frac {- \ theta_1} {2} \ sum_ {i \ approx j} (x_i – x_j) ^ 2 – \ frac {\ theta_2} {2} \ sum_i x_i ^ 2) $$ Mutta todennäköisesti he viittaavat eri matriisiin.

Päivitä Itse mielestäni tarkkuusmatriisi $ J (\ rho) $ , jotka kuvaavat neljän naapurin välistä vuorovaikutusta, on vain kaistamatriisi eli matriisi, jossa on useita diagonaaleja. Tässä tapauksessa (kuvittelen) 2 ylä- ja 2 lävistäjää, kaikki täynnä $ – 0.22 $ ja vain $ 1 $ päädiagonaalissa.

Kuinka voin silti ottaa näytteen tarkkuusmatriisin kuvaamasta jakaumasta? Pitäisikö minun kääntää se ja hankkia tietojen kovarianssimatriisi ja sitten ottaa siitä näyte? Jos kyllä, alla on koodi sen tekemiseen. Joku voi olla hyödyllistä nähdä koodi, jota voimme käyttää otantaan tästä GMRF: stä, olettaen $ \ vec (0) $ keskiarvon ja matriisiulottuvuuden 30.

import numpy as np def precision(k, numero): return np.diag(np.repeat(1, k)) + np.diag(np.repeat(numero, k-1), -1) + np.diag(np.repeat(numero, k-2), -2) + np.diag(np.repeat(numero, k-1), 1) + np.diag(np.repeat(numero, k-2), 2) J = precision(30, -0.22) Sigma = np.linalg.inv(J) np.random.multivariate_normal(np.repeat(0, 30), Sigma) 

vastaus

Kun sinulla on GMRF: n tarkkuusmatriisi, jos teet jaksottaisten rajojen lisäoletus (jota kutsutaan myös torus-oletukseksi) näytteenotto GMRF: stä tulee sitten melko helpoksi FFT-pohjaisilla menetelmillä. Tämä on kuvattu Ruen ja Heldin Gaussian Markovin satunnaiskenttien (teoria ja sovellukset) algoritmissa 2.10. Koko osa 2.6 on omistettu tämän algoritmin esittelylle.

Uskon, että mainitsemasi artikkelin kirjoittajat käyttivät tätä tekniikkaa, koska he käsittelevät 25 miljoonan muuttujan GMRF: ää (joten tarvitset tehokkaita näytteenottomenetelmä, kuten spektrimenetelmät). Lisäksi kuvassa 3 esitetyllä GMRF: llä näyttää olevan jaksollisia rajoja.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *