3

Exp() 変数の 8 x 1000 マトリックスを作成しました。これは、指数分布から 8 回サンプリングする 1000 回の反復 (列) を表します。各列の値の割合のうち、重要な値よりも小さい値を取得する方法を見つけようとしています。したがって、最終的には 1000 パーセンテージのベクトルになります。私はいくつかのことを試しましたが、まだRに比較的慣れていないため、いくつかの問題があります。

これは、まったく機能しない私の現在のバージョンのコードです。サンプルの平均または分散が必要なときに適用関数を (for ループなしで) 使用したので、このアプローチを試してみましたが、このパーセンテージには別のものが必要なようです。何かご意見は?

 m=1000
 n=8
 theta=4
 crit=3
 x=rexp(m*n,1/theta)

 Mxs=matrix(x,nrow=n)

 ltcrit=matrix(nrow=m,ncol=1)

 for(i in 1:m){
    lt3=apply(Mxs,2,length(which(Mxs[,i]<crit)/n))
    }

 ltcrit
4

2 に答える 2

5

あなたが使用することができますcolMeans

colMeans(Mxs < crit)
[1] 0.500 0.750 0.250 0.375 0.375 0.875 ...
于 2012-10-31T14:24:46.413 に答える
5

applyfor ループなしで使用して、答えを得ることができます。

percentages = apply(Mxs, 2, function(column) mean(column < crit))

を使用した無名関数の作成に注意してくださいfunction(column) mean(column < crit)apply(Mxs, 2, mean)列の平均が必要な場合、または列の分散が必要な場合におそらく使用しましたapply(Mxs, 2, var)が、そのスペースに任意の関数を配置でき、各列で実行されることに注意してください。

また、未満mean(column < crit)の値のパーセンテージを取得する良い方法であることに注意してください。columncrit

于 2012-10-31T14:11:31.710 に答える