R에서 서로 다른 평균 및 Sd 값을 사용하여 많은 관측치에 대한 Rnorm 시뮬레이션

Jinku Hu 2023년1월30일
  1. Map함수를 사용하여 R의 많은 관측치에 대해rnorm시뮬레이션
  2. apply함수를 사용하여 R의 많은 관측치에 대해rnorm시뮬레이션
R에서 서로 다른 평균 및 Sd 값을 사용하여 많은 관측치에 대한 Rnorm 시뮬레이션

이 기사에서는 R에서 서로 다른평균및sd값을 사용하여 많은 관측치에 대해rnorm을 시뮬레이션하는 여러 방법을 보여줍니다.

Map함수를 사용하여 R의 많은 관측치에 대해rnorm시뮬레이션

rnorm함수는 기본평균이0이고 표준 편차 (sd)가1인 경우 정규 분포에 대한 임의 편차를 생성하는 데 사용됩니다. 후자의 매개 변수는 요소의 벡터로 선택적으로 전달할 수 있습니다. 이 경우 사전 정의 된평균및sd값을 데이터 프레임의 일부로 저장했습니다. Map함수는 주어진 함수 객체를 여러 벡터의 해당 요소에 적용합니다. 함수 객체를 첫 번째 인수로 사용하고 벡터 객체를 다음 인수로 사용합니다. 벡터 객체의 수는 주어진 함수 객체의 필수 매개 변수와 같아야합니다. 다음 예에서는 각data요소에 대해5편차를 생성합니다. 또한set.seed함수를 사용하여 여러 프로그램 실행간에 재현 가능한 결과에 대한 시드 값을 지정합니다. Map함수는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

출력:

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

apply함수를 사용하여 R의 많은 관측치에 대해rnorm시뮬레이션

또는apply함수를 사용하여 데이터 프레임의 다른 행에 대해rnorm을 시뮬레이션 할 수 있습니다. apply함수는 일반적으로 지정된 함수 객체를 배열 또는 행렬의 지정된 여백에 적용하여 값을 반환하는 데 사용됩니다. 여백은MARGIN이라는 두 번째 매개 변수를 사용하여 지정됩니다. MARGIN인수는 행렬의 행에 적용될 함수를 나타내는1값을 가질 수 있습니다. 반면2값은 행렬의 열을 나타내고c(1,2)는 행렬의 행과 열을 모두 나타냅니다. apply함수의 첫 번째 인수는 배열 또는 행렬 일 수 있습니다. 그러나 전달 된 객체가 배열이 아닌 경우as.matrix또는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)

출력:

         [,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
작가: 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

관련 문장 - R Distribution