3

我创建了一个 8 x 1000 的 Exp() 变量矩阵。这表示从指数分布中采样 8 次的 1000 次迭代(列)。我试图弄清楚如何获得每列中小于临界值的值的百分比。所以我最终得到了一个 1000 个百分比的向量。我已经尝试了几件事,但对 R 来说仍然相对较新,我遇到了一些困难。

这是我当前版本的代码,不太好用。当我想要样本的均值或方差时,我使用了 apply 函数(没有 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

您可以apply在没有任何 for 循环的情况下使用并得到答案:

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)是获得column小于的值百分比的好方法crit

于 2012-10-31T14:11:31.710 回答
5

您可以使用colMeans

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