[EMAIL PROTECTED] 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.