大家好,
這是我作為 SE 的第一篇文章……如果答案看起來微不足道,請原諒我!
客戶希望能夠根據多種統計定律產生隨機數據,其中之一就是 ZIP 定律。 在公式編輯器中,可以有隨機泊松()...但不能有隨機零膨脹泊松()。
有沒有辦法產生這樣的隨機分佈(Pi:零的百分比和泊松分佈的 µ 參數)?
先感謝,斯特凡
你好,
首先:無聊但重要的是,ZIP( lambda, p ) 通常被建模為泊松 (lambda) 分佈和 0 分佈的混合,比例分別為 (1-p) 和 p。
由於泊松分佈能夠自行產生零,因此 ZIP 中零(長期)的實際比例將大於 p,且等於 p + (1-p)*e^( - lambda)。
因此,客戶必須做的第一件事是決定:他們是否希望使用 p 代表資料來自零分佈(標準)的機率,或者他們是否希望指定 ZIP 產生的零的總比例過程?
如果是前者,請使用 p,就像我在下面使用的那樣。 如果是後者,那麼在解 p` 的 p = p` + (1 - p`) * e^(-lambda) 後,我們看到客戶必須用 p` 取代下面的 p,其中 p` = ( p - e^(-lambda)) / ( 1 - e^(-lambda) )。
一旦決定了這一點,由於內建的隨機泊松 ( lambda ) 函數,實際產生資料就非常簡單。
下面的程式碼顯示了每種情況的結果,假設 lambda = 5 且 p = 0.10
names default to here (1);
lambda = 5;
p = 0.1;
nObs = 1e7; // number of observations
// generate a ZIP, under the standard assumptions. 10% of the time, generate a 0. 90% of the time, generate a poisson ( 5 )
sample1 = J ( nObs, 1, if ( randomuniform () < p, 0, randomPoisson ( lambda ) ) );
// generate a ZIP with TOTAL long-run proportion of zeros == 0.10
p2 = (p - exp(-lambda))/(1 - exp( -lambda));
sample2 = J ( nObs, 1, if ( randomuniform () < p2, 0, randomPoisson ( lambda ) ) );
// check proportion of zeros in each sample
propZero1 = mean ( sample1 == 0 );
propZero2 = mean ( sample2 == 0 );
// report results
print(evalinsert("Poportion of zeros in sample from standard ZIP ( 5, 0.10 :(</img> ^propZero1^."));
print(evalinsert("Poportion of zeros in sample from unconventionally-defined ZIP ( 5, 0.10 :(</img> ^propZero2^."));

雖然這是 JSL,但如果使用者想在資料表中執行此操作,則可以將其中任何一個放入公式編輯器中。 我在下面說明了第一種情況。
