Python中的简单MCMC

2024-06-25 23:30:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用python实现一个简单的mcmc,但因为我是这门语言的新手 我有一些我不能指出的错误。有人能帮我吗? 提前谢谢

import numpy as np
def target(x) : 
    if x < 0 :
        print(0)  
    else: 
        print(np.exp(-x))
    return
    
    
target(1)
target(-1)
x = np.repeat(0,1000)
x[0] = 3     
for(i in range(2,1000)
  current  = x[i-1]
  proposal = current + np.random.normal(0,1,1)
    A = target(proposal)/target(current) 
  if np.random.uniform(0,1,1) < A : 
    x[i] = proposal       
  else: 
    x[i] = current        
plt.plot(x) 


Tags: importnumpy语言targetifas错误np
1条回答
网友
1楼 · 发布于 2024-06-25 23:30:29

下面的运行,主要是在删除多余的paren并让函数返回值之后

import numpy as np
import matplotlib.pyplot as plt

def target(value):
    if value < 0:
        return 0
    else:
        return np.exp(-value)

x = np.repeat(0, 1000)
x[0] = 3
for i in range(2, 1000):
    current = x[i - 1]
    proposal = current + np.random.normal(0, 1, 1)
    A = target(proposal) / target(current)
    if np.random.uniform(0, 1, 1) < A:
        x[i] = proposal
    else:
        x[i] = current

plt.plot(x)

您可能想考虑使用IDE类似的PyTrack、VS代码或Atom来帮助识别将来的错误。

相关问题 更多 >