Simule Rnorm para muitas observações usando diferentes valores médios e Sd em R

Jinku Hu 30 janeiro 2023
  1. Use a função Map para simular rnorm para muitas observações em R
  2. Use a função apply para simular norma para muitas observações em R
Simule Rnorm para muitas observações usando diferentes valores médios e Sd em R

Este artigo irá demonstrar vários métodos de simulação de rnorm para muitas observações usando diferentes valores de média e sd em R.

Use a função Map para simular rnorm para muitas observações em R

A função rnorm é usada para gerar desvios aleatórios para a distribuição normal, dado que a média padrão é igual a 0 e o desvio padrão (sd) é 1. Observe que os últimos parâmetros podem ser passados ​​opcionalmente como o vetor de elementos. Nesse caso, armazenamos os valores predefinidos mean e sd como parte do quadro de dados. A função Map aplica o objeto de função dado aos elementos correspondentes de vários vetores. Leva o objeto de função como o primeiro argumento e os objetos de vetor como os seguintes argumentos. Observe que o número de objetos vetoriais deve ser igual aos parâmetros obrigatórios do objeto de função fornecido. No exemplo a seguir, geramos 5 desvios para cada elemento de data. Além disso, usamos a função set.seed para especificar o valor da semente para resultados reproduzíveis entre várias execuções do programa. A função Map retorna um objeto 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

Resultado:

[[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

Use a função apply para simular norma para muitas observações em R

Alternativamente, podemos usar a função apply para simular rnorm para linhas diferentes no quadro de dados. A função apply é geralmente usada para retornar valores da aplicação de um determinado objeto de função às margens especificadas de um array ou matriz. As margens são especificadas usando o segundo parâmetro denominado MARGIN. O argumento MARGIN pode ter o valor 1, que indica a função a ser aplicada às linhas do array. Por outro lado, o valor 2 denota as colunas do array, e c(1,2) indica ambas - linhas e colunas do array. O primeiro argumento da função apply pode ser um array ou um array. Observe, porém, que se o objeto passado não for um array, ele é forçado para o tipo de array usando as funções as.matrix ou 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)

Resultado:

         [,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
Autor: 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