R の異なる平均値と Sd 値を使用して、多くの観測値の Rnorm をシミュレートする
この記事では、R のさまざまな平均値と sd
値を使用して、多くの観測値に対して rnorm
をシミュレートする複数の方法を示します。
R で Map
関数を使用しての多くの観測の 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
R で apply
関数を使用しての多くの観測の rnorm
をシミュレートする
または、apply
関数を使用して、データフレームのさまざまな行の rnorm
をシミュレートすることもできます。apply
関数は通常、指定された関数オブジェクトを配列または行列の指定されたマージンに適用することから値を返すために使用されます。マージンは、MARGIN
という名前の 2 番目のパラメーターを使用して指定されます。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