2017-02-04 11 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) 

は、動作しませんであれば(> C | B < c)のリターン(担当者(NaNで、回=2:if(a!= c){: 条件の長さが1より大きく、最初の要素のみが使用されます 3: p [i] *(b-a): オブジェクトの長さがオブジェクトの長さの倍数でない場合交換するアイテムの数が置換の長さの倍数でない 5:In([p] [i] *(b-a)*(c-a)):(p-j)*(b-a): 長いオブジェクトの長さは短いオブジェクトの長さの倍数ではない 6:p [j] < - b - sqrt((1 - p [j])* B - A)*(B - C)):交換するアイテムの 数が rtriangleは、入力としてベクトルを取ることはありませんので、あなたがAのすべての要素を評価するベクトルを作成することができ、交換長

+0

パラメータ 'a'は0ですが、' b'と 'c'は1つの数字ではありません。どのようにサンプリングしようとしているのかはわかりません。 –

+0

'rtriangle'の助けを借りて:' a、b、cはrtriangleの場合を除いて適切な長さのベクトルです。 ' –

+0

ベクトルを取得したいと思います(ベクトルの長さはベクトルの負の数に対応します* * x **)を三角分布からサンプリングしたものです。 _a_(_a = 0_)から_b_(_bはベクトル_ ** x **の負の要素の絶対値)の範囲でサンプリングしたい場合、_c_は_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つの異なる三角形分布に対して1つのランダムサンプルが得られます。

+0

ありがとう、今私はあなたのコメントについて何かを理解しています。答えが助けられたように見えます。 – marianess

関連する問題