2017-02-04 36 views
0

想從三角形分佈生成數字,它只有三個參數:在我的情況下,a,b,c和c被定義爲(a + b)/ 2。 比方說,我有一個向量x:三角形分佈的隨機樣本:R

x <- c(1,-1,2,-2,3,-3,4,-4,5,-5,11,-11,12,-12,13,-13) 

而且我想因爲有在向量x負數產生許多新的值。因此,我可以用三角分佈生成的數字代替負值。

library(triangle) 
c = abs(x[x<0])/2 
sample <- rtriangle(length(a[which(a<0)]), 0, abs(x[x<0]),c) 

顯然是行不通的,因爲我得到一個警告消息:

警告消息: 1:在IF(A> C | b < c)返回(REP(南安倍= n)): 條件長度> 1且僅使用第一個元素 2:In if(a!= c){: 條件長度> 1且僅使用第一個元素 3:在p [i] *(b - a)中: 較長的物體長度不是較短物體長度的倍數 4:在p [i] < - a + sqrt(p [i] *(b - a)*(c - a))中: 要替換的項數不是替換長度的倍數 5: (1-p [j])*(b-a): 較長的對象長度不是較短的對象長度的倍數 6:在p [j] < -b-sqrt b - α)*(b - C)): 數項替換的是不更換長

+0

參數'a'爲0,但'b'和'c'不是單個數字。我不清楚你如何嘗試抽樣。 –

+0

從'rtriangle'的幫助下:'a,b和c可能是適當的長度向量,除了rtriangle的情況。' –

+0

我想得到一個向量(向量長度對應於向量中的一些負數* * x **)從三角形分佈採樣的數字。我想在從_a_(_a = 0_)到_b_(_b是向量_ ** x **中的負向元素的絕對值)的範圍內採樣,並且參數_c_是:_c = b/2_。 – marianess

回答

1

由於rtriangle不採取向量作爲輸入的倍數,則可以創建評估的每個元素的矢量使用sapply這樣的矢量:

x <- c(1,-1,2,-2,3,-3,4,-4,5,-5,11,-11,12,-12,13,-13) 

library("triangle") 

sample = sapply(abs(x[x<0]), function(x){ rtriangle(1,0,x,x/2) }) 

> sample 
[1] 0.6514940 0.6366981 1.8598445 0.9866790 1.7517438 2.9444719 4.1537113 2.2315813 

您將得到一個8個不同三角形分佈的隨機樣本。

+0

謝謝,現在我明白你的評論是關於什麼的。看起來答案有幫助。 – marianess