2017-02-04 2 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 음수가있는만큼 새로운 값을 생성합니다. 그래서 나는 음의 값을 삼각형 분포에서 생성 된 숫자로 대체 할 수 있습니다.

경고 메시지 : 1 : 나는 경고 메시지로 분명히

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

가 작동하지 않습니다에서 경우 (A> C | B < c) 반환 (대표 (NaN의 시간 =2 : if (a! = c) {: 조건의 길이가 1보다 크고 첫 번째 요소 만 사용됩니다. 3 : p [i] * (b - a) : 길이가 긴 객체 길이가 더 짧은 객체 길이의 배수가 아닙니다교체 할 항목 수가 대체 길이의 배수가 아님 5 : In (i - 1) 1 - p [j]) * (b - a) : 길이가 긴 객체 길이가 더 짧은 객체 길이의 배수가 아님 6 : p [j] < - b - sqrt ((1 - p [j]) * B - A) * (B - C)) : 대체 할 항목의 수 rtriangle 이후

+0

매개 변수 'a'는 0이지만 'b'와 'c'는 하나의 숫자가 아닙니다. 어떻게 샘플을하려고하는지 명확하지 않습니다. –

+0

'rtriangle'의 도움으로부터 :'a, b, c는 rtriangle의 경우를 제외하고 적당한 길이의 벡터 일 수 있습니다 .' –

+0

벡터를 얻고 싶습니다. (벡터 길이는 벡터의 음수에 해당합니다. * x **) 삼각형 분포로부터 샘플링 된 숫자. _a_ (_a = 0_)에서 _b_ (_b는 벡터 _ ** x **의 음수 요소의 절대 값이므로 _c_ b = 2_)의 범위에서 샘플링하려고합니다. – marianess

답변

1

입력으로 벡터를하지 않는 대체 길이의 배수가 아닌, 당신은의 모든 요소를 ​​평가하는 벡터를 만들 수 있습니다 벡터는 다음과 같이 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