Sto eseguendo la versione R 2.14.0 su un PC che utilizza Windows 7 Ultimate (processore Intel Core i5-2400 3GHz con RAM da 8,00 GB). Fammi sapere se sono necessarie altre specifiche.non è stato possibile raggiungere la piena precisione in 'qbeta'
Sto provando a simulare i dati distribuiti beta correlati. Il metodo che sto usando è un'estensione di ciò che è scritto in questo documento:
http://onlinelibrary.wiley.com/doi/10.1002/asmb.901/pdf
- In sostanza, comincio simulando dati normale multivariata (usando
mvrnorm()
funzione dal MASS). - Quindi io uso
pnorm()
per applicare la trasformazione probit a questi dati in modo che i miei nuovi dati vettoriali vivano su (0,1). E sono ancora correlati secondo la dichiarazione precedente. - Quindi, dati questi dati trasformati probit, applico la funzione
qbeta()
con determinati parametri shape1 e shape2, per recuperare i dati beta correlati con determinate proprietà di media e dispersione.
Conosco altri metodi per generare dati beta correlati. Sono interessato al motivo per cui lo qbeta()
causa il fallimento di questo metodo per alcuni "semi". Di seguito è il messaggio di errore che ottengo.
Warning message:
In qbeta(probit_y0, shape1 = a0, shape2 = b0) :
full precision may not have been achieved in 'qbeta'
Cosa significa? Come può essere evitato? Quando si verifica nel contesto di una simulazione più ampia, qual è il modo migliore per garantire che questo problema non risolva l'intero codice di simulazione di origine (utilizzando source())?
Ho eseguito il seguente codice per i semi interi da 1: 1000. Seed = 899 era l'unico valore che mi dava problemi. Anche se è problematico qui, inevitabilmente sarà problematico anche per altri semi.
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)
Il codice sopra riportato è un frammento di un pezzo di un progetto di simulazione più ampio. Ma il messaggio di avvertimento qbeta() è quello che mi sta facendo venire il mal di testa ora.
Qualsiasi aiuto che il gruppo potrebbe fornire sarebbe molto apprezzato.
Acclamazioni Chris
Non ricevo un avviso con R 3.0.1. Considerare l'aggiornamento di R. – Roland
Nessun avviso su R 2.15.1 – eddi
Grazie a @Roland. Ho scaricato l'ultima versione di R 3.0.1 (32 bit). Ho eseguito lo stesso codice di sopra ... set.seed (216) e ottengo lo stesso errore: Messaggio di avviso: In qbeta (probit_y1, shape1 = a1, shape2 = b1): la precisione totale potrebbe non essere stata raggiunta in ' qbeta ' – Chris