前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言代做编程辅导和解答M3S9/M4S9 Stochastic Simulation: Project 2

R语言代做编程辅导和解答M3S9/M4S9 Stochastic Simulation: Project 2

原创
作者头像
拓端
发布2022-12-13 16:47:35
2220
发布2022-12-13 16:47:35
举报
文章被收录于专栏:拓端tecdat

全文链接:http://tecdat.cn/?p=30829

  1. Consider the following density:
image.png
image.png

f(x) / ( 0 otherwise. x(11-x) exp h- 12 -2 + ln 1-xx2

(a) Devise and implement two efficient algorithms for simulating from f(x). (b) Estimate the normalizing constant using Monte Carlo integration. (c) Devise and implement a Metropolis-Hastings sampler for generating variates from f(x). In particular: i) You should tune the Metropolis-Hastings algorithm to have acceptance rate about 20%. ii) Examine how the rate at which the algorithm reaches equilibrium depends on the starting value. iii) Consider carefully the correlation structure of the sequence generated. iv) Compare the results of the Metropolis-Hastings sampler with the method implemented in (a).

  1. Consider the following bimodal \two-humps" density:
image.png
image.png

f(x; λ0) / exp -x2 1 + x2 2 + (x1 +2x2)2 - 2λ0x1x2 ; x 2 R2

for some parameter λ0, say λ0 = -4.

(a) Devise and implement a Metropolis-with-Gibbs sampler for generating variates from f(x; λ0). (b) Devise and implement a Metropolis-Hastings sampler for generating variates from f(x; λ0). (c) Compare the behavior of the Metropolis-with-Gibbs sampler and MetropolisHastings algorithm when λ0 = -4 and when λ0 = -8.

代码语言:javascript
复制
(a)

 

h=function(x)

{

  options(warn=-1)

  if(x>0 && x<1)v=exp(-((3+log(x/(1-x)))^2)/2)/(x-x^2)

  else v=0
image.png
image.png
image.png
image.png
image.png
image.png
代码语言:javascript
复制
normalfactor =function(n)

  {
image.png
image.png
代码语言:javascript
复制
ff=function(x){sqrt(f(x))}

fff<-function(x){x*sqrt(f(x))}

 

opt=function (n){#alpha,beta,theta are calculated using optimize function in R

   

    alpha = optimize(ff,c(0,1),maximum=T)$objective

    beta = 0 

    theta = optimize(fff,c(0,1),maximum=T)$objective

    tp <- (nf)/(2 *alpha * (theta - beta))

    factor = 1/((nf)/(2 * alpha * (theta - beta)))
image.png
image.png
代码语言:javascript
复制
输出前100000个分布的值

 

#envelop function env

env =function(x)

  {

    if(x<=0)v=0

    else if(x<=0.01)v=330*x

    else if(x<=0.03)v=33
image.png
image.png

黑色代表函数值,绿色代表envelop function的拟合值。

计算envelop function的累计密度函数

image.png
image.png
代码语言:javascript
复制
mv=optimize(f(x)/env(x),c(0,1),maximum=T)$objective

 

f2 = function(n)

  {

    rand = vector("numeric",0)
image.png
image.png

B)

代码语言:javascript
复制
nfactor =function(n)

  {

    u = runif(n,0,1)

    theta=mean(f(u))
image.png
image.png
代码语言:javascript
复制
x=f1(u)

    theta=mean((f(x)/env(x)*a))

    cat("normalising factor   ",theta,"\n")

    f(x)*a/env(x)
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 全文链接:http://tecdat.cn/?p=30829
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档