我在使用Windows 7 Ultimate(带8.00GB内存的Intel Core i5-2400 3GHz处理器)的PC上运行R版本2.14.0。让我知道是否需要其他规范。

我正在尝试模拟相关的Beta分布式数据。我使用的方法是对本文内容的扩展:

http://onlinelibrary.wiley.com/doi/10.1002/asmb.901/pdf

  • 基本上,我从模拟多元正常数据开始(使用MASS的mvrnorm()函数)。
  • 然后,我使用pnorm()将概率转换应用于这些数据,这样我的新数据向量将继续存在(0,1)。并且仍然根据前面的陈述进行关联。
  • 然后给定这些经过概率转换的数据,我将qbeta()函数与特定的shape1和shape2参数一起应用,以获取具有一定均值和分散特性的相关beta数据。

  • 我知道还有其他生成相关Beta数据的方法。我对qbeta()为什么导致某些“种子”无法通过此方法感兴趣。以下是我收到的错误消息。
    Warning message:
    In qbeta(probit_y0, shape1 = a0, shape2 = b0) :
      full precision may not have been achieved in 'qbeta'
    

    这是什么意思?如何避免呢?当确实在较大的仿真环境中发生问题时,确保该问题不会终止整个源代码(使用source())仿真代码的最佳方法是什么?

    我为1:1000的整数种子运行了以下代码。 Seed = 899是唯一给我带来麻烦的值。尽管如果这里有问题,那么对于其他种子也不可避免地也会有问题。
    library(MASS)
    set.seed(899)
    n0 <- 25
    n1 <- 25
    a0 <- 0.25
    b0 <- 4.75
    a1 <- 0.25
    b1 <- 4.75
    varcov_mat <- matrix(rep(0.25,n0*n0),ncol=n0)
    diag(varcov_mat) <- 1
    y0 <- mvrnorm(1,mu=rep(0,n0),Sigma=varcov_mat)
    y1 <- mvrnorm(1,mu=rep(0,n1),Sigma=varcov_mat)
    probit_y0 <- pnorm(y0)
    probit_y1 <- pnorm(y1)
    beta_y0 <- qbeta(probit_y0, shape1=a0, shape2=b0)
    beta_y1 <- qbeta(probit_y1, shape1=a1, shape2=b1)
    

    上面的代码是一个较大的仿真项目的一部分。但是,qbeta()警告消息现在让我头疼。

    该小组可以提供的任何帮助将不胜感激。

    干杯
    克里斯

    最佳答案

    产生该错误的原因是,用于计算qbeta的算法未针对这些参数值收敛。

    R使用AS 109来计算qbeta(Cran,G. W.,K. J. Martin和G. E. Thomas(1977)。注释AS R19和算法AS 109,Applied Statistics,26,111–114,以及随后的注释(AS83和更正)。)。 R尝试在1000次迭代中计算该值。如果它不能在1000次迭代中,您将看到错误消息。

    这是qbeta的代码。

    10-06 04:59