2011-12-03 10 views
0

1打点データポイントとさまざまなパーセント打ち切りで打ち切られたデータセットを生成するコードを記述したいと思います。 は、私はいくつかの乱数を生成するために、次のコードを有するがMATLABでシミュレートされた打ち切りデータセットを作成する方法

n=input('Enter sample size:'); 
GM=input('Enter geometric mean:'); 
GSD=input('Enter geometric standard deviation:'); 
m=input('Enter desired number of dataset:'); 
x = lognrnd(log(GM), log(GSD),n,m); 

を検閲しないIは、検出の既知の限界(LOD)値(LOD)と打ち切りデータセットを作成し、検閲パーセントを計算するために、次のコードを持っています私はそこで働くべきデータセットを持っています。

c = (x > lod); % c are values less than this number 
x(c) = lod; % create single lod 
sum(c)/length(c) % calculate percent censored 

が、それは希望%が検閲コンピュータを提供し、コンピュータがLODが検閲そのパーセントに相当見つけることです私は何をしたいです。私は手作業でlod値を入れることができますが、もしそれが%打ち切りのデータセットを作成したいのであれば、非常に時間がかかります。

目標は、シミュレーションでさまざまな割合で打ち切られたさまざまな打ち切りデータセットを作成することです。私は一度に1つのデータセットをやってきましたが、それは非常に長い時間がかかります。これがすべて意味があるかどうか私に教えてください。

答えて

1

あなたは統計ツールボックスを持っている場合は、機能PRCTILEを使用することができます。

pct = 10; 
lod = prctile(x, pct); 

またはQUANTILE(実際には内部ではprctileが使用されます)。

pct = 0.1; 
lod = quantile(x,pct); 
+0

ありがとう!これはうまくいった! – user1009166

+0

複数の検閲値を持つシミュレートされたデータセットを作成する方法を知っていますか?私が今持っているのは、単一の検閲された値を持つシミュレーションです。 – user1009166

+0

どういう意味ですか?特定の 'lod'で' c = x yuk

0

これには複数の方法がありますが、データに基づいて推定PMFとCMFを使用するのが非常に簡単です。私は、データの一定割合が閾値以下になるように、しきい値を決定したい場合、私はこの最初のようにそれに近づくだろう

%# Get a histogram of the data 
nbins = 100; 
[counts xout]=hist(x,nbins); 
pmf = counts/length(x); 
cmf = cumsum(pmf); 

%# Determine the threshold based on some percentage 
pct = 0.05; 
idx = find(cmf<0.05,1,'last') 
thold = xout(idx); 

%# in this instance, 5% of the data is below x(idx) 
%# now the data can be thresholded 
thresholded = x(x>thold); 
関連する問題