여러분, 안녕하세요,
이것은 SE로서의 첫 번째 게시물입니다 ... 대답이 사소해 보이면 용서해주세요!
고객은 여러 통계법에 따라 무작위 데이터를 생성할 수 있기를 원하며 그 중 하나는 ZIP 법입니다. 수식 편집기에서 Random Poisson() ...을 포함할 수 있지만 Random Zero Inflated Poisson()은 포함할 수 없습니다.
그러한 무작위 분포를 생성하는 방법이 있습니까(Pi: 0의 % 및 푸아송 분포의 μ 매개변수 사용)?
미리 감사드립니다, 스테판
안녕,
첫째: 지루하지만 중요한 것은 ZIP(lambda, p)는 일반적으로 각각 (1-p)와 p의 비율로 포아송(lambda) 분포와 0 분포의 혼합으로 모델링됩니다.
푸아송 분포는 자체적으로 0을 생성할 수 있기 때문에 ZIP에서 0(장기)의 실제 비율은 p보다 크고 p + (1-p)*e^( - 람다)와 같습니다.
따라서 고객이 가장 먼저 해야 할 일은 다음을 결정하는 것입니다. 데이터가 0 분포(표준)에서 나올 확률을 나타내기 위해 p를 사용할 것인지 아니면 ZIP에서 생성된 0의 전체 비율을 지정하기를 원하는 것인지 결정해야 합니다. 프로세스?
전자의 경우 아래에서 사용한 것처럼 p를 사용합니다. 후자의 경우 p`에 대해 p = p` + (1 - p`) * e^(-lambda)를 해결한 후 고객이 대신 p`를 아래의 p로 대체해야 함을 확인합니다. 여기서 p` = ( p - e^(-람다)) / ( 1 - e^(-람다) ).
이것이 결정되면 내장된 Random Poisson(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이지만 사용자가 데이터 테이블에서 이 작업을 수행하려는 경우 둘 중 하나를 수식 편집기에 배치할 수 있습니다. 아래에서 첫 번째 사례를 설명했습니다.
