Quale algoritmo utilizza per impostazione predefinita la funzione rnorm
per generare numeri casuali distribuiti normalmente standard?Quale algoritmo utilizzato dalla funzione rnorm
risposta
Vedere ?RNGkind
. L'impostazione predefinita è un algoritmo di inversione:
normal.kind
può essere "Kinderman-Ramage", "Buggy Kinderman-Ramage" (non perset.seed
), "Ahrens-Dieter", "Box-Muller", "inversione" (il valore predefinito di ) o "fornito dall'utente". (Per l'inversione, vedere il riferimento inqnorm
.) Il generatore di Kinderman-Ramage utilizzato nelle versioni precedenti alla 1.7.1 (ora chiamato "Buggy") presentava diversi errori di approssimazione e dovrebbe essere utilizzato solo per la riproduzione dei vecchi risultati solo per . Il generatore "Box-Muller" è stateful poiché le coppie di normali vengono generate e restituite in sequenza. Lo stato viene ripristinato ogni volta che viene selezionato (anche se è il generatore normale corrente) e quando il tipo viene modificato.
È possibile modificare l'algoritmo da
RNGkind(normal.kind = "Box-Muller")
È possibile trovare ciò che è attualmente impostato, cercando in RNGkind()[2]
.
L'altra risposta è sufficiente, ma mi ha lasciato qualche domanda in più; in particolare, non ho visto da nessuna parte nella documentazione * cosa diavolo è l'algoritmo "Inversion"
, quindi mi sono tuffato nel source code, che fornisce anche riferimenti accademici ai documenti che originano gli altri possibili algoritmi, per capire cosa si sta facendo esattamente .
case INVERSION:
#define BIG 134217728 /* 2^27 */
/* unif_rand() alone is not of high enough precision */
u1 = unif_rand();
u1 = (int)(BIG*u1) + unif_rand();
return qnorm5(u1/BIG, 0.0, 1.0, 1, 0);
Così sembra alla base l'algoritmo predefinito "Inversion"
genera un numero punto molto lungo galleggiante, quindi li invia alla funzione qnorm5
che è funzione CDF per la distribuzione normale.
Per quanto riguarda il funzionamento della funzione di qnorm5
(dato non v'è alcuna forma chiusa per il CDF normale né inverso CDF), non ho avuto molta fortuna fessurazione quello che sembra essere il codice sorgente here, ma lo fanno dare ulteriore accademico riferimenti, ovvero Beasley, J. D. and S. G. Springer (1977) e Wichura, M.J. (1988); il primo è tipicamente usato per piccoli quantili del CDF e il secondo per grandi (z>7
o giù di lì).
Potrebbe anche essere interessante notare che (al momento della stesura di questo documento) questo algoritmo sembra essere shared by the Julia language, che condivide anche il codice qnorm5
utilizzato da R
.
* Per correttezza, in retrospettiva, Wichura è menzionato in ?qnorm
a cui si fa riferimento in precedenza. Comunque, vale la pena di precisare le cose in questa discussione, penso.
Grazie! Stavo cercando questa risposta! –
- 1. Quale algoritmo di ordinamento viene utilizzato da LINQ "OrderBy"?
- 2. Quale algoritmo di crittografia viene utilizzato in DPAPI per WP7?
- 3. Quale algoritmo viene utilizzato nel correttore ortografico di Android?
- 4. Come scoprire quale algoritmo [crittografia] è supportato dalla mia JVM?
- 5. Quale algoritmo utilizza python()()?
- 6. Algoritmo utilizzato in Ruby per "String # include?"
- 7. quale algoritmo dovrei usare?
- 8. Algoritmo di JavaScript "sort()" Funzione
- 9. Quale algoritmo sta usando nello standard ZIP?
- 10. Quale algoritmo utilizza Photoshop per desaturare un'immagine?
- 11. Quale algoritmo di ordinamento viene utilizzato dal metodo Array.Sort() di .NET?
- 12. Quale algoritmo di crittografia viene utilizzato dal comando 'zip' di linux?
- 13. Quale algoritmo useresti per codificare un pappagallo?
- 14. Quale algoritmo di hashing fornisce l'output più lungo?
- 15. Chiamare rnorm con un vettore di mezzi
- 16. Algoritmi di apprendimento automatico: quale algoritmo per quale problema?
- 17. Come sapere quale malloc viene utilizzato?
- 18. quale caricatore di classi viene utilizzato?
- 19. Quale algoritmo di espressione regolare utilizza PHP?
- 20. Quale algoritmo utilizza Python in fractions.gcd()?
- 21. Algoritmo semplice, breve, logico (quale direzione andare?)
- 22. quale algoritmo per un programma di programmazione
- 23. Quale algoritmo utilizza buildbot per assegnare i builder agli slave?
- 24. Quale algoritmo usa R per calcolare la media?
- 25. Quale tipo di carattere è utilizzato in MS-DOS?
- 26. Funzione algoritmo per serie fibonacci
- 27. Come sapere quale motore di archiviazione viene utilizzato in mongodb?
- 28. Quale algoritmo utilizza Asp.net Identity per crittografare la password?
- 29. Come dire quale metodo viene utilizzato da una chiamata di funzione quando `methods` fallisce?
- 30. Punteggio Lucene: in quale contesto viene utilizzato queryNorm?
grazie, lo sai, se la funzione rnorm viene utilizzata dal pacchetto mvtnorm per generare numeri casuali distribuiti standard normali? – Klaus
@Klaus yes, 'mvtnorm''s' rmvnorm' usa la stessa funzione 'rnorm'. –
usano l'opzione predefinita? – Klaus