【问题标题】:Simulation of random variables X and Y随机变量 X 和 Y 的模拟
【发布时间】:2019-09-27 15:23:25
【问题描述】:

我有以下算法来生成 X 和 Y 的值。

第一步,生成U1,U2~U(0,1)

第 2 步。t=-beta*log(U1*U2)

步骤 3. 生成 U3~U(0,1)

第四步。X=t*U3, Y=t-X


请注意,您可以通过生成 U1 和 U2 并定义 X=-beta * log(U1) 和 Y=-beta * log(U2) 来比较生成 X 和 Y 的方式


这是我在 R 中实现此算法的方法:

f<-function(alpha,beta){ # alpha=2, beta=3 for example

  N<-1000
  t<-rep(0,N)
  X<-rep(0,N)
  Y<-rep(0,N)

  for(j in 1:N) 
  {
    u<-runif(alpha)

    t[j]<- -beta*log(prod(u)) 

    U3<-runif(1)

    X[j]<-t[j]*U3
    Y[j]<-t[j]-X[j]

  }

  c<-list(X,Y)

  return(c)
}
alpha<-2
beta<-3
y1<-f(alpha,beta)


hist(y1,freq=F,nclass=10,col="gray")

#COMPARISON, defining x and y directly as -beta*ln(u):

u1<-runif(1)
u2<-runif(1)
betaa<-2
x<- -betaa*log(u1)
y<- -betaa*log(u2)
x
y

该代码仅适用于数字部分,为“X”和“Y”生成 1000 个值。我遇到问题的地方是histogram 的一部分,因为它没有显示任何内容,标记错误

hist(y1,freq=F,nclass=10,col="gray") hist.default(y1, freq = F, nclass= 10, col = "gray") 中的错误: “x”必须是数字

我不明白为什么,我该如何解决这个问题?

有人可以帮忙吗?

【问题讨论】:

    标签: r algorithm random statistics simulation


    【解决方案1】:

    你的问题是变量 y1 是 list 类型的。

    typeof(y1)
    [1] "list"
    

    你需要做的是 unlist(y1) 所以它会变成双倍 hist() 可以使用。

    所以更正需要是:

    y1 = unlist(y1)
    hist(y1,freq=F,nclass=10,col="gray")
    

    【讨论】:

      猜你喜欢
      • 2020-12-24
      • 2021-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-20
      相关资源
      最近更新 更多