5

いくつかの背景: まず、[R] の一様 (0,1) 分布から複数のサンプル セット (それぞれのサンプル サイズ n) を生成したいと考えました。一様分布から生成するためのコマンドは、いくつかのサンプル サイズ x に対して runif(n=x) であることを知っています。たとえば、サンプル サイズ 20 が必要な場合、コマンドは次のようになります。

runif(n=20)

次に、コマンドを使用しました

レプリケート (100、runif (n = 20))

これにより、値の double マトリックスが生成され、100 列 20 行のデータセットに変換できました。

すべての列ベクトルのサンプル平均 (一様分布から取得した 100 セットのサンプル平均) からなるデータセットを生成することは可能ですか?

ご協力ありがとうございました。

4

4 に答える 4

10

を使用できますcolMeans

data <- replicate(100, runif(n=20))
means <- colMeans(data)
于 2012-04-25T19:56:17.850 に答える
4

データの生成:

data <- replicate(100, runif(n=20))

列、行の平均:

col_mean <- apply(data, 2, mean)
row_mean <- apply(data, 1, mean)

列、行の標準偏差

col_sd   <- apply(data, 2, sd)
row_sd   <- apply(data, 1, sd)
于 2012-04-25T20:08:27.913 に答える
2

私が正しく理解している場合: apply(replicate(100,runif(n=20)),2,mean)

于 2012-04-25T19:54:24.093 に答える
2

ニコの答えから構築すると、代わりに を 1 回呼び出しrunif()、それを行列にフォーマットしてから、その colMeans を取得できます。それはより速く証明され、他の答えと同等です。

library(rbenchmark)
#reasonably fast
f1 <- function() colMeans(replicate(100,runif(20)))
#faster yet
f2 <- function() colMeans(matrix(runif(20*100), ncol = 100))

benchmark(f1(), f2(), 
          order = "elapsed", 
          columns = c("test", "elapsed", "relative"),
          replications=10000)

#Test results
  test elapsed relative
2 f2()    0.91 1.000000
1 f1()    5.10 5.604396
于 2012-04-25T22:25:57.080 に答える