-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathStarter.py
59 lines (45 loc) · 4.39 KB
/
Starter.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
'''
Created on 16.07.2014
@author: Jimbo
'''
import MetropolisHastings as MH
import RegionalMetropolisHastings as RMH
import scipy.stats as stats
import Name
import Distribution
import numpy as np
desiredDimensionality = 2
desiredMean = np.array([-4,-2])
desiredCov = np.array([[6,-1],[-1,2]])
stepSize = 1000
noOfSamples = 100000
# high dim
highDimensionality = 12
highDimMean = (np.random.rand(highDimensionality)-0.5) * 4
mat = (np.random.rand(highDimensionality, highDimensionality)-0.5)
highDimCov = (mat + mat.transpose()) * 0.1
highDimCov = highDimCov - np.diag(np.diag(highDimCov)) + np.diag(np.diag(np.random.rand(highDimensionality, highDimensionality))) * 4
#highDimCov = np.diag(np.ones_like(highDimMean))
print highDimMean
print highDimCov
if __name__ == '__main__':
desired = Distribution.MultivariateNormal(desiredMean, desiredCov)
highdimensional = Distribution.MultivariateNormal(highDimMean, highDimCov)
problem0 = MH.MetropolisHastings(Name.METROPOLIS_HASTINGS, stats.cauchy.pdf, Distribution.UnivariateNormal(0,1), True)
problem1 = MH.MetropolisHastings(Name.METROPOLIS_HASTINGS, lambda x: desired.getPDF(x, None), Distribution.MultivariateNormal(np.zeros((desiredDimensionality,)), np.identity(desiredDimensionality)/5.), randomWalk=True)
problem1b = MH.MetropolisHastings(Name.METROPOLIS_HASTINGS, lambda x: highdimensional.getPDF(x,None), Distribution.MultivariateNormal(np.zeros((highDimensionality,)), 0.5 * np.identity(highDimensionality)), randomWalk=True)
problem2 = MH.MetropolisHastings(Name.ADAPTIVE_METROPOLIS_HASTINGS, lambda x: desired.getPDF(x, None), Distribution.MultivariateNormal(np.zeros((desiredDimensionality,)), 0.1**2 * np.identity(desiredDimensionality) * 1./desiredDimensionality), randomWalk=True)
problem2b = MH.MetropolisHastings(Name.ADAPTIVE_METROPOLIS_HASTINGS, lambda x: highdimensional.getPDF(x,None), Distribution.MultivariateNormal(np.zeros((highDimensionality,)), 0.1**2 * np.identity(highDimensionality) * 1./highDimensionality), randomWalk=True)
problem3 = MH.MetropolisHastings(Name.ADAPTIVE_GIBBS, lambda x: desired.getPDF(x, None), Distribution.AdaptiveGibbsProposal(desiredDimensionality), randomWalk=True)
problem3b = MH.MetropolisHastings(Name.ADAPTIVE_GIBBS, lambda x: highdimensional.getPDF(x, None), Distribution.AdaptiveGibbsProposal(highDimensionality), randomWalk=True)
problem4 = RMH.RegionalMetropolisHastings(Name.REGIONAL_ADAPTIVE_METROPOLIS_HASTINGS,lambda x: desired.getPDF(x,None))
problem4b = RMH.RegionalMetropolisHastings(Name.REGIONAL_ADAPTIVE_METROPOLIS_HASTINGS,lambda x: highdimensional.getPDF(x,None))
# problem0.start(noOfSamples=noOfSamples, stepSize=1000, dimensionality=desiredDimensionality, animateStatistics=False, animateDistribution=True, gibbsBatchSize=50, desiredCovarianceMatrix=desiredCov)
# problem1.start(noOfSamples=noOfSamples, stepSize=1000, dimensionality=desiredDimensionality, animateStatistics=True, animateDistribution=True, gibbsBatchSize=50, desiredCovarianceMatrix=desiredCov)
problem1b.start(noOfSamples=noOfSamples, stepSize=stepSize, dimensionality=highDimensionality, animateStatistics=False, animateDistribution=False, gibbsBatchSize=50, desiredCovarianceMatrix=highDimCov)
# problem2.start(noOfSamples=noOfSamples, stepSize=stepSize, dimensionality=desiredDimensionality, animateStatistics=True, animateDistribution=True, gibbsBatchSize=50, desiredCovarianceMatrix=desiredCov )
problem2b.start(noOfSamples=noOfSamples, stepSize=stepSize, dimensionality=highDimensionality, animateStatistics=False, animateDistribution=False, gibbsBatchSize=50, desiredCovarianceMatrix=highDimCov )
#problem3.start(noOfSamples=noOfSamples, stepSize=1000, dimensionality=desiredDimensionality, animateStatistics=True, animateDistribution=True, gibbsBatchSize=50, desiredCovarianceMatrix=desiredCov)
problem3b.start(noOfSamples=noOfSamples, stepSize=stepSize, dimensionality=highDimensionality, animateStatistics=False, animateDistribution=False, gibbsBatchSize=50, desiredCovarianceMatrix=highDimCov )
# problem4.start(noOfSamples=noOfSamples, stepSize=stepSize, dimensionality=desiredDimensionality, animateStatistics=True, animateDistribution=True,desiredCovarianceMatrix=desiredCov)
problem4b.start(noOfSamples=noOfSamples, stepSize=stepSize, dimensionality=highDimensionality, animateStatistics=False, animateDistribution=False,desiredCovarianceMatrix=highDimCov)