R の異なる平均値と Sd 値を使用して、多くの観測値の Rnorm をシミュレートする

胡金庫 2023年1月30日
  1. R で Map 関数を使用しての多くの観測の rnorm をシミュレートする
  2. R で apply 関数を使用しての多くの観測の rnorm をシミュレートする
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
著者: 胡金庫
胡金庫 avatar 胡金庫 avatar

DelftStack.comの創設者です。Jinku はロボティクスと自動車産業で8年以上働いています。自動テスト、リモートサーバーからのデータ収集、耐久テストからのレポート作成が必要となったとき、彼はコーディングスキルを磨きました。彼は電気/電子工学のバックグラウンドを持っていますが、組み込みエレクトロニクス、組み込みプログラミング、フロントエンド/バックエンドプログラミングへの関心を広げています。

LinkedIn Facebook

関連記事 - R Distribution