2017-05-19 66 views
0

我是R的初學者,並且正在處理數據,我需要從一個von Mises分佈中隨機抽樣10次。我已經計算了我數據的濃度參數(kappa),並使用CircStats包中的rvm()生成隨機樣本。對於每個真實觀察,我有一個馮米塞斯平均(以度爲單位, 「實施例」 下面列):如何在進入R中的下一行之前按行ID進行分析,其中每行將被重新採樣(重新分析)10次?

OB的實施例1 1 69.43064 2 2 -41.80749 3 3 133.83900 4 4 -12.82486 5 5 - 137.57358 6 6 -19.27882

因此如果我是從與0.44的濃度參數(卡帕)一個馮米塞斯分佈計算的10的隨機樣本,我的用於所述第一觀察代碼將如下所示:

rvm(10,rad(69.430 64),. 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 $ Example),.44)

我在計算每個觀察10個隨機值。我的理想輸出會是什麼樣子:

觀測數據隨機 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

等等與每個觀察。我覺得這是一個非常基本的問題,但是我無法用觀察編號編碼該循環。

謝謝你的時間!

回答

1

如果你有意見的數據幀和他們的手段例如:

obs_plus_mean = data.frame(obs = 1:5, mean = c(69.43064, -41.80749, 133.83900, -12.82486, -137.57358, -19.27882)) 

那麼對於一個稍微強大的解決方案,你可以通過做一個函數,卡帕的輸入開始,樣本均值和樣本大小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 $這裏的意思)


這應該工作,請讓我知道否則。

+0

啊!得到它了。我在結束時(作爲初學者)遇到了一個小問題,並錯誤地解釋了一部分代碼。這很好!非常感激。 – TannerA

+0

太棒了!沒問題。爲了將來的參考,我可能知道你錯誤理解了哪一部分? – kishan

+0

其實,只有一個問題 - 我想要所有這些生成的樣本在csv中列1是觀察編號,2包含隨機值。我將這些樣本鏈接到實際數據,因此觀察數據可以幫助我進行適當的比較。我嘗試了幾種方法,但都導致觀察編號混亂。任何指針? – TannerA