Re: [R] fitting truncated normal distribution

From: Sundar Dorai-Raj <sundar.dorai-raj_at_pdf.com>
Date: Thu 17 Aug 2006 - 01:35:17 EST

Sorry, didn't notice that you *did* mention dtnorm is part of msm. Ignore that part of the advice...

--sundar

Sundar Dorai-Raj wrote:
>
> aon.912182281.tmp@aon.at wrote:
>

>>Hello,
>>I am a new user of R and found the function dtnorm() in the package msm.
>>
>>My problem now is, that it is not possible for me to get the mean and sd out of a sample when I want a left-truncated normal distribution starting at "0".
>>
>>fitdistr(x,dtnorm, start=list(mean=0, sd=1))
>>
>>returns the error message 
>>"Fehler in "[<-"(`*tmp*`, x >= lower & x <= upper, value = numeric(0)) :    nichts zu ersetzen"
>>
>>I don't know, where to enter the lower/upper value. Is there a possibility to program the dtnorm function by myself?
>>
>>Thank you very much in advance for your help,
>>markus
>>
>>-------------------------------------------
>>Versendet durch aonWebmail (webmail.aon.at)
>>
>>
>>______________________________________________
>>R-help@stat.math.ethz.ch mailing list
>>https://stat.ethz.ch/mailman/listinfo/r-help
>>PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>>and provide commented, minimal, self-contained, reproducible code.

>
>
> Hi, Markus,
>
> You should always supply the package name where dtnorm is located. My
> guess is most don't know (as I didn't) it is part of the msm package.
> Also, you should supply a reproducible example so others may understand
> your particular problem. For example, when I ran your code on data
> generated from "rtnorm" (also part of msm) I got warnings related to the
> NaNs generated in pnorm and qnorm, but no error as you reported. Both of
> these suggestions are in the posting guide (see signature above).
>
> So, to answer your problem, here's a quick example.
>
> library(MASS) ## for fitdistr
> library(msm) ## for dtnorm
>
> dtnorm0 <- function(x, mean = 0, sd = 1, log = FALSE) {
> dtnorm(x, mean, sd, 0, Inf, log)
> }
>
> set.seed(1) ## to others may reproduce my results exactly
> x <- rtnorm(100, lower = 0)
> fitdistr(x, dtnorm0, start = list(mean = 0, sd = 1))
>
> Note, the help page ?fitdistr suggests additional parameters may be
> passed to the density function (i.e. dtnorm) or optim. However, this
> won't work here because "lower" is an argument for both functions. This
> is the reason for writing dtnorm0 which has neither a lower or an upper
> argument.
>
> HTH,
>
> --sundar
>
> ______________________________________________
> R-help@stat.math.ethz.ch mailing list
>
https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.


R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. Received on Thu Aug 17 02:57:43 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Thu 17 Aug 2006 - 04:27:04 EST.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.