2013-06-12 11 views
6

Windows 7 Ultimate (8.00GB RAM Intel Core i5-2400 3GHz 프로세서)를 사용하는 PC에서 R 버전 2.14.0을 실행 중입니다. 다른 사양이 필요한지 알려주세요.'qbeta'에서 전체 정밀도가 달성되지 않았을 수 있습니다.

상관 관계가있는 베타 분산 데이터를 시뮬레이션하려고합니다.

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

  1. 는 기본적으로, 나는 (MASS에서 mvrnorm() 기능을 사용하여) 다변량 정규 데이터를 시뮬레이션하여 시작 : 내가 사용하는 방법은이 문서에 기록 된 것을의 확장입니다.
  2. 그런 다음 pnorm()을 사용하여 새 데이터 벡터가 (0,1)에 살도록 이러한 데이터에 프로 비트 변환을 적용합니다. 그리고 이전 진술에 따라 여전히 상관 관계가 있습니다.
  3. 그런 다음이 probit로 변환 된 데이터를 통해 특정 mean1 및 분산 특성을 갖는 상관 된 베타 데이터를 얻기 위해 특정 shape1 및 shape2 매개 변수와 함께 qbeta() 함수를 적용합니다.

상관 관계가있는 베타 데이터를 생성하는 다른 방법이 있습니다. 나는 왜 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() 경고 메시지는 현재 두통을주는 것입니다.

그룹이 제공 할 수있는 도움이 있으면 대단히 감사하겠습니다.

건배 크리스

+0

R 3.0.1에서는 경고 메시지가 표시되지 않습니다. R 업데이트를 고려하십시오. – Roland

+0

R 2.15.1에 대한 경고가 없습니다. – eddi

+0

감사합니다. @Roland. 최신 버전의 R 3.0.1 (32 비트)을 다운로드했습니다. 위의 ... set.seed (216)와 같은 코드를 실행하여 동일한 오류가 발생했습니다. 경고 메시지 : qbeta (probit_y1, shape1 = a1, shape2 = b1)에서 : 전체 정밀도가 ' qbeta ' – Chris

답변

2

오류의 원인은 qbeta을 계산하는 데 사용되는 알고리즘이 매개 변수의 그 값을 수렴하지 않은 것입니다.

R은 qbeta (Cran, GW, KJ Martin 및 GE Thomas (1977))를 계산하기 위해 AS 109를 사용합니다. 참고 AS R19 및 알고리즘 AS 109, Applied Statistics, 26, 111-114 및 후속 발언 (AS83 및 수정)). R은 1000 회 반복으로 값을 계산하려고 시도합니다. 1000 회 반복 할 수 없다면 사용자가 본 오류 메시지가 나타납니다.

다음은 qbeta의 코드입니다.