2016-10-16 10 views
0

私は以下の質問に興味があります:N(0,1)からそれぞれ100個のランダムサンプルを生成します。各サンプルにおいて、絶対平均を見つける。 (1/100)* sum(abs(x))を計算します。ここで私はそれについて行く方法です:R:ノーマル絶対値から無作為にサンプリングする

set.seed(124) 

N <- 100 

samples <- rnorm(n=N, mean=0, sd=1) 

A <- function(x,N){ 
    (1/N)*sum(abs(x)) 
} 

result <- sapply(samples, A, N) 

print(result) 
print(mean(result)) 
print(var(result)) 

しかし、これは、単一のサイズ100ランダムサンプルを取っているようだ。コードを修正するにはどうすればよいですか?そして平均と分散のプロットをresultとして生成するには、どうすればよいでしょうか?Nは変わりますか? forループを使用する必要がありますか、これをRで行うより良い方法がありますか?

ありがとうございました!

+0

あなたは 'rnorm'を正確に1回呼び出しました。つまり、100個の乱数のサンプルが1つだけです。 –

+0

ありがとうございます。二人の「サプリー」をやったら? 'N < - 100' 'NSamp < - C(1:N)' ' takesample < - 関数(N){ X < - rnorm(N = N、平均= 0、SD = 1) } '' サンプル< - sapply(NSamp、takesample(N)) ' ' < - 関数(X、N){ (1/N)*和(ABS(X)) } ''結果< - sapply(samples、A、N) ' – aridneptune

+0

以下にいくつかの作業コードを追加しました。乾杯! –

答えて

0

はこれを試してみてください:

runs <- 100; 
rfun <- rnorm; 
size <- 100; 
m <- double(0) 
for (i in 1:runs) m[i] = mean(rfun(size)); 

あなたは今、サイズ100の100個のサンプルそれぞれから100件の手段を持っています。私はそれを書いたので、もしあなたが望むのであれば、普通の配布物以外で遊ぶことができます。

+1

私はRの考えは、ループを使う代わりにベクトル上に関数を適用しようと考えていたと思いましたか? (これは正しいとは言えませんが、私の頭の中でそれをまっすぐにしようとしています) – aridneptune

+0

仕事を終わらせるための最も簡単なルートは何ですか: –

0

これはより機能的です。それはあなたが望むものに近いですか? ?sapplyから

sample_hundo <- function() { rnorm(n=100, mean=0, sd=1) } 
funny_normalize <- function(sample.vec) { sum(abs(sample.vec))/length(sample.vec) } 

replicate(10, funny_normalize(sample_hundo())) 

は、「複製」(通常 乱数生成を伴うだろう)式の 繰り返し評価のための「sapply」の一般的な使用のためのラッパーです。

+0

それはかなりいいです! これは10回の複製だけですか?さらに、いくつかの行列(データフレーム?)に結果を格納する必要はありません。 – aridneptune

+0

これは間違いなく10回のレプリケーションしか行いません。あなたは必要に応じてそれを交換することができるはずです。また、行列、データフレーム、およびベクトルは、すべて異なるジョブの異なるデータ型です。この質問と回答では、どちらがあなたのアプリケーションに最適かはわかりません。 –

0

マトリックスの使用はどうですか?各列はランを表し、各列はN(0,1)からの100個の値を含みます。ループを回避するようにしてください。

runs <- 200; size <- 100 
sample_mat <- matrix(rnorm(runs*size, mean = 0, sd = 1), ncol = runs) 
colMeans(abs(sample_mat)) 
+0

ありがとうございます。これらは200個のサンプルで、それぞれサイズ100のものだと思いますよね?私は 'rnorm'の最初の引数で' runs * size'をなぜ持っているのかよくわかりません: 'size'だけではないでしょうか?それぞれ100回、100のサイズが必要です。 – aridneptune

+0

「colMeans」は正確に何をしていますか?ダブルポストにごめんなさい – aridneptune

+0

@aridneptune各列の平均を計算します。 – parksw3

関連する問題