Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: st: How to generate a censored random variable
From
"Joao Ricardo F. Lima" <[email protected]>
To
[email protected]
Subject
Re: st: How to generate a censored random variable
Date
Thu, 6 Feb 2014 22:35:26 -0200
Joerg,
thanks for your answer and suggestions. I'm not a R user, I dont know
which package that function is from, sorry.
Best Regards,
Joao Ricardo
2014-02-06 Joerg Luedicke <[email protected]>:
> It seems to me that you are interested in drawing random numbers from
> a _truncated_ normal distribution. Truncation is not the same as
> censoring. Also, if you refer to a certain R function, you should
> mention which package that function is from. Anyway, an inverted CDF
> approach is shown in a WIkipedia article (see link below). Here is
> some Stata code:
>
> *-----------------------------------------------
> * http://en.wikipedia.org/wiki/Truncated_normal_distribution
>
> clear
> set obs 1000
> set seed 1234
>
> local a = 0
> local b = 2
> local sigma = 1
> local mu = 0
>
> gen u = runiform()
>
> gen x = invnormal(normal(`a') + u * (normal(`b') - normal(`a'))) *
> `sigma' + `mu'
>
> drop u
> sum x
> *-----------------------------------------------
>
> You might also want to have a look at Christian Robert's paper which
> is referred to in the Wikipedia article. He proposes an accept-reject
> algorithm for some situations. Below is an implementation of this
> algorithm for the case where zero is an element of the truncation
> range:
>
> *-----------------------------------------------
> * Robert, Christian P. (1995). "Simulation of truncated normal variables".
> * Statistics and Computing 5 (2): 121-125.
> * (section 2.2, page 123)
>
> clear
> set obs 1000
> set seed 1234
>
> gen x = .
>
> local N 0
>
> while `N' < 1000 {
> cap drop z rho_z u
> gen z = 2*runiform()
> gen rho_z = exp( -z^2 / 2 )
> gen u = runiform()
> replace x = z if u <= rho_z & mi(x)
> qui cou if !mi(x)
> local N = r(N)
> }
>
> drop z rho_z u
> sum x
> *-----------------------------------------------
>
> Joerg
> *
> * For searches and help try:
> * http://www.stata.com/help.cgi?search
> * http://www.stata.com/support/faqs/resources/statalist-faq/
> * http://www.ats.ucla.edu/stat/stata/
--
---------------------------------------------------------
João Ricardo F. de Lima, D.Sc.
Pesquisador A - Economia Aplicada
Embrapa Semiárido
e-mail: [email protected]
fone: +55 (87) 3866-3667
home-page: www.cpatsa.embrapa.br
----------------------------------------------------------
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/faqs/resources/statalist-faq/
* http://www.ats.ucla.edu/stat/stata/