xpRt.wannabe
2006-Aug-18 02:00 UTC
[R] Fitting Truncated Lognormal to a truncated data set (was: fitting truncated normal distribution)
Dear List, I am trying to fit Truncated Lognormal to a data set that is 'truncated' from above a certain value, say, 0.01. Below is what I was able to come up with. I would appreciate it if you could review and make any necessary changes. # This is modified off the code for 'dtnorm' of library(msm). dtlnorm <- function (n, mean = 0, sd = 1, lower = -Inf, upper = Inf) { ret <- numeric() if (length(n) > 1) n <- length(n) while (length(ret) < n) { y <- rlnorm(n - length(ret), mean, sd) y <- y[y >= lower & y <= upper] ret <- c(ret, y) } stopifnot(length(ret) == n) ret } # This is modified off the code for 'rtnorm' of the library(msm). rtlnorm <- function (n, mean = 0, sd = 1, lower = -Inf, upper = Inf) { ret <- numeric() if (length(n) > 1) n <- length(n) while (length(ret) < n) { y <- rlnorm(n - length(ret), mean, sd) y <- y[y >= lower & y <= upper] ret <- c(ret, y) } stopifnot(length(ret) == n) ret } x <- rtlnorm(100, mean=-11.64857, sd = 3.422795, 0.01) fitting truncated normal distribution" on 8/16/2006. dtlnorm0 <- function(x, mean = 0, sd = 1) { dtlnorm(x, mean, sd, 0.01, Inf) } fitdistr(x, dtlnorm0, start = list(mean = -11, sd = 1)) Thank you. platform i386-pc-mingw32 arch i386 os mingw32 system i386, mingw32 status major 2 minor 2.1 year 2005 month 12 day 20 svn rev 36812 language R