Simula Rnorm per molte osservazioni utilizzando diversi valori medi e Sd in R

Jinku Hu 16 luglio 2021
  1. Usa la funzione Map per simulare rnorm per molte osservazioni in R
  2. Usa la funzione apply per simulare norm per molte osservazioni in R
Simula Rnorm per molte osservazioni utilizzando diversi valori medi e Sd in R

Questo articolo dimostrerà diversi metodi per simulare rnorm per molte osservazioni utilizzando diversi valori di media e sd in R.

Usa la funzione Map per simulare rnorm per molte osservazioni in R

La funzione rnorm viene utilizzata per generare deviazioni casuali per la distribuzione normale dato che la media predefinita è uguale a 0 e la deviazione standard (sd) è 1. Si noti che questi ultimi parametri possono essere passati facoltativamente come vettore di elementi. In questo caso, abbiamo memorizzato i valori mean e sd predefiniti come parte del frame di dati. La funzione Mappa applica l’oggetto funzione dato agli elementi corrispondenti di più vettori. Prende l’oggetto funzione come primo argomento e gli oggetti vettoriali come argomenti seguenti. Notare che il numero di oggetti vettoriali dovrebbe essere uguale ai parametri obbligatori dell’oggetto funzione dato. Nell’esempio seguente, generiamo deviazioni 5 per ogni elemento data. Inoltre, utilizziamo la funzione set.seed per specificare il valore del seme per risultati riproducibili tra più esecuzioni del programma. La funzione Map restituisce un oggetto list.

set.seed(123)
df1 <- data.frame(
  data = sample(1:64, 4),
  mean = sample(1:64, 4),
  sd = c(1, 4, 8, 20)
)

n <- 5
func1 <- function(x, y) rnorm(n, mean = x, sd = y)
list1 <- Map(func1, df1$mean, df1$sd)
list1

Produzione:

[[1]]
[1] 3.129288 4.715065 3.460916 1.734939 2.313147

[[2]]
[1] 40.21735 46.89633 43.43926 43.60309 42.44273

[[3]]
[1] 45.55327 64.29531 53.98280 34.26706 55.61085

[[4]]
[1] 44.54417 32.64353 49.64050 33.47991 39.42218

Usa la funzione apply per simulare norm per molte osservazioni in R

In alternativa, possiamo usare la funzione apply per simulare rnorm per diverse righe nel frame di dati. La funzione apply viene generalmente utilizzata per restituire valori dall’applicazione dell’oggetto funzione dato ai margini specificati di un array o di una matrice. I margini vengono specificati utilizzando il secondo parametro denominato MARGIN. L’argomento MARGIN può assumere il valore 1, che indica la funzione da applicare alle righe della matrice. D’altra parte, il valore 2 indica le colonne della matrice e c(1,2) indica sia le righe che le colonne della matrice. Il primo argomento della funzione apply può essere un array o una matrice. Nota, tuttavia, se l’oggetto passato non è un array, viene forzato al tipo di array usando le funzioni as.matrix o as.array.

set.seed(123)
df1 <- data.frame(
  data = sample(1:64, 4),
  mean = sample(1:64, 4),
  sd = c(1, 4, 8, 20)
)

n <- 5
func1 <- function(x) rnorm(n, mean = x[1], sd = x[2])
apply(df1[-1], 1, FUN = func1)

Produzione:

         [,1]     [,2]     [,3]     [,4]
[1,] 3.129288 40.21735 45.55327 44.54417
[2,] 4.715065 46.89633 64.29531 32.64353
[3,] 3.460916 43.43926 53.98280 49.64050
[4,] 1.734939 43.60309 34.26706 33.47991
[5,] 2.313147 42.44273 55.61085 39.42218
Autore: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook