我如何按行ID进行分析,其中每行将重新采样(重新分析)10次,然后再转到R中的下一行?

我如何按行ID进行分析,其中每行将重新采样(重新分析)10次,然后再转到R中的下一行?,r,random,R,Random,我是R的初学者,正在研究数据,我需要从冯·米塞斯分布中随机取样,每行10次。我已经计算了数据的浓度参数(kappa),并且正在使用来自CircStats包的rvm()生成随机样本。对于每个实际观察,我有一个冯·米塞斯平均值(以度为单位,下面的“示例”栏): Obs示例 1 1 69.43064 2 2 -41.80749 3 3 133.83900 4 4 -12.82486 5 5 -137.57358 6-19.27882 因此,如果我要从浓度参数(kappa)

我是R的初学者,正在研究数据,我需要从冯·米塞斯分布中随机取样,每行10次。我已经计算了数据的浓度参数(kappa),并且正在使用来自CircStats包的rvm()生成随机样本。对于每个实际观察,我有一个冯·米塞斯平均值(以度为单位,下面的“示例”栏):

Obs示例 1 1 69.43064 2 2 -41.80749 3 3 133.83900 4 4 -12.82486 5 5 -137.57358 6-19.27882

因此,如果我要从浓度参数(kappa)为.44的von Mises分布计算10个随机样本,我的第一次观察代码如下所示:

rvm(10,弧度(69.43064),.44) [1] 0.7695183 5.9182905 2.6174674 5.6028430 2.4213428 5.4660423 6.1753582 [8] 2.6910969 4.2964024 5.4806146

我想参考数据中观察到的平均值,因此:

rvm(10,rad(BearEx$示例),.44)

我希望每次观察计算10个随机值。我的理想输出如下所示:

Obs随机 1 0.7695183 1 5.9182905 1 2.6174674 1 5.602843 1 2.4213428 1 5.4660423 1 6.1753582 1 2.6910969 1 4.2964024 1.5.4806146

每一次观察都是如此。我觉得这是一个非常基本的问题,但我很难用观察值编码这个循环


谢谢你的时间

如果您有一个观测数据框架及其平均值:

obs_plus_mean = data.frame(obs = 1:5, mean = c(69.43064, -41.80749, 133.83900, -12.82486, -137.57358, -19.27882))
然后,对于某种稳健的解决方案,您可以首先创建一个函数,该函数输入kappa、样本平均值和样本大小n,以便为每次观察生成一个大小为n的样本。为了方便起见,您甚至可以输入kappa和样本大小的默认值

von_mis_sample = function(mean, size = 10 , kappa = .44) { 
  sample = rvm(size,rad(mean),kappa)
}
然后您可以通过调用计算样本

samples = sapply(obs_plus_mean$mean, von_mis_sample(mean))
(在您的情况下,我认为您希望使用BearEx$示例,而不是obs_plus_mean$mean)



这应该行得通,否则请告诉我。

啊!知道了。作为初学者,我遇到了一个小问题,错误地解释了代码的一部分。这很有效!非常感谢,太好了!没问题。为了将来的参考,我可以知道你错误理解的部分是什么吗?实际上,还有一个问题-我想把所有这些生成的样本放在一个csv中,其中第1列是观察值,第2列包含随机值。我将这些样本与真实数据联系起来,所以观察数据可以帮助我进行适当的比较。我尝试了几种方法,但都会导致观测值被混淆。有什么建议吗?对不起,我没有先看到你之前的评论。我将这部分:samples=sappy(obs_plus_意味着$mean,von_mis_sample(mean))调整为:samples=sappy(obs_plus_意味着$mean,von_mis_sample)只是删除了(mean)。是的,调用函数很重要,在这方面帮不了你。您能否澄清您希望csv文件的外观?