Do you want to estimate the parameters of a lognormal distribution or learn how to do nonlinear regression in R?
If the former, as far as I know, the best known method is maximum likelihood, for which the answer is to compute mean and standard deviations of the logs. This assumes you are talking about the 2-parameter lognormal. I don't know the best method for a 3-parameter lognormal. If that's what you want, PLEASE do read the posting guide! "http://www.R-project.org/posting-guide.html". Doing so can increase the chances of getting a useful reply. If you want examples of nonlinear regression, have you considered "nls" and "optim"? spencer graves Mark Miller wrote: > Attached is a copy of my code, the data and the plots obtained by varying > terms manually, I was told that nonlinear regression in R could find the > values for me, but I am unable to figure how exactly I could implement this. > Any help would be very greatly appreciated as I am completely stuck on this > problem. > > > On Thursday 04 August 2005 13:40, you wrote: > >>It might be good to have an example of your problem. >> >>On Aug 4, 2005, at 5:57 AM, Mark Miller wrote: >> >>>Hi, I have been trying to figure out how to use the nonlinear >>>regression to >>>fit the cumulative lognormal distribution to a number of data >>>points I have >>>but I am a new R user and I cant quite decipher the notes on nonlinear >>>regression. Any help in this regard will be greatly appreciated, >>>my email >>>address is [EMAIL PROTECTED] >>> >>>______________________________________________ >>>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 >>> >>> >>>------------------------------------------------------------------------ >>> >>>rm(list=ls()) >>> >>>outPut = read.csv("dataOut2.csv") >>>arrive = outPut[1] >>>register = outPut[2] >>>complete = outPut[3] >>> >>> >>>IAT = 0 >>>TTR = 0 >>>TTC = 0 >>>TFR = 0 >>>cnt = 1 >>> >>>for(i in array(2:dim(arrive)[1])) >>>{ >>> temp = outPut[i,3]-outPut[i,2] >>> if(temp > 0) >>> { >>> IAT[cnt] = outPut[i,1]-outPut[i-1,1] >>> TTR[cnt] = outPut[i,2]-outPut[i,1] >>> TFR[cnt] = outPut[i,3]-outPut[i,2] >>> cnt = cnt + 1 >>> } >>>} >>> >>>cumIAT = IAT/sum(IAT) >>>for(i in array(2:length(IAT))) >>>{ >>> cumIAT[i] = cumIAT[i-1]+cumIAT[i] >>>} >>>cumIAT[1] = 0 >>>plot(cumIAT,do.point=F) >>> >>> >>>TTR[cnt] = outPut[1,2]-outPut[1,1] >>>TFR[cnt] = outPut[1,3]-outPut[1,2] >>> >>># Plot for inter-arrival times >>>x = seq(0,30,0.01) >>>#postscript("cumIAT.ps") >>>plot(ecdf(IAT), do.point=FALSE) >>>lines(x, pexp(x,0.4)) >>>dev.off() >>># rexp(100,0.21) >>> >>>x = seq(0,20,0.01) >>>postscript("cumTTR.ps") >>>plot(ecdf(TTR), do.point=FALSE) >>>lines(x, plnorm(x,1,0.7)) >>>dev.off() >>># rlnorm(100,1,0.7) >>> >>># Plot for Time to complete from registered >>>x = seq(0,30,0.01) >>>postscript("cumTFR.ps") >>>plot(ecdf(TFR), do.point=FALSE) >>>lines(x*600, pbeta(x,1.4,4.3)) >>>dev.off() >>># rbeta(100,1.6,5)*600 >>> >>># Find the position with the leat time and hence the next avaliable ambulance >>>minimum = function(toFind) >>>{ >>> min = 0; >>> pos = 0; >>> for(i in array(1:length(toFind))) >>> { >>> if(i == 1) >>> { >>> min = toFind[i] >>> pos = i >>> } >>> else >>> { >>> if(toFind[i] < min) >>> { >>> min = toFind[i] >>> pos = i >>> } >>> } >>> } >>> >>> pos >>>} >>> >>>ambsReq = 0 >>>numAmbs = 0 >>>numberAmbs = 0 >>>avgWait = 1 >>>numberAmbs2 = 0 >>>avgWaitTime2 = 0 >>>avgWaitTime = 0 >>>counter = 0 >>>counter2 = 1 >>>cntO = 1 >>> >>>for(i in array(1:50)) >>>{ >>> while(avgWait > 0) >>> { >>> counter = counter + 1 >>> numAmbs = numAmbs + 1 >>> numberAmbs[counter] = numAmbs >>> numCalls = 1 >>> ambs = array(c(array(0,numAmbs)), dim=c(numAmbs,numCalls)) >>> waitTime = ambs >>> totalTime = ambs >>> currTime = 0 >>> timeTS = 0 >>> IotherAT = 0 >>> TotherTR = 0 >>> >>> for(i in array(1:500)) >>> { >>> #interAT = IAT(ceil(rand()*length(IAT))); >>> interAT = rexp(1,0.21) >>> #timeTR = TTR(ceil(rand()*length(TTR))); >>> timeTR = rlnorm(1,1,0.7) >>> #timeFR = TFR(ceil(rand()*length(TFR))); >>> timeFR = rbeta(1,1.4,4.3)*600 >>> >>> IotherAT[i] = interAT >>> TotherTR[i] = timeTR >>> >>> currTime = currTime + interAT >>> >>> pos = minimum(totalTime) >>> >>> if(ambs[pos,numCalls] != 0) >>> { >>> numCalls = numCalls + 1 >>> ambs = array(c(ambs,array(0,numAmbs)), >>> dim=c(numAmbs,numCalls)) >>> waitTime = array(c(waitTime,array(0,numAmbs)), >>> dim=c(numAmbs,numCalls)) >>> if(totalTime[pos] > currTime) >>> waitTime[pos,numCalls] = totalTime[pos] >>> - currTime >>> totalTime[pos] = totalTime[pos] + interAT + >>> timeTR + timeFR >>> ambs[pos,numCalls] = interAT + timeTR + timeFR >>> } >>> else >>> { >>> for(i in array(1:numCalls)) >>> { >>> if(ambs[pos,i] == 0) >>> { >>> if(totalTime[pos] > currTime) >>> waitTime[pos,i] = >>> totalTime[pos] - currTime >>> totalTime[pos] = totalTime[pos] >>> + interAT + timeTR + timeFR >>> ambs[pos,numCalls] = interAT + >>> timeTR + timeFR >>> break >>> } >>> } >>> } >>> } >>> >>> avgWait = sum(waitTime)/500 >>> avgWaitTime[counter] = avgWait >>> if(numAmbs == 25) >>> { >>> avgWaitTime2[cntO] = avgWait >>> numberAmbs2[cntO] = numAmbs >>> cntO = cntO + 1 >>> } >>> } >>> >>> postscript("timeAmbs.ps") >>> plot(numberAmbs,avgWaitTime,'lines') >>> dev.off() >>> >>> postscript("timeAmbs2.ps") >>> plot(numberAmbs2,avgWaitTime2,'lines') >>> dev.off() >>> >>> ambsReq[counter2] = numAmbs >>> numAmbs = 0 >>> numberAmbs = 0 >>> avgWait = 1 >>> avgWaitTime = 0 >>> counter = 0 >>> counter2 = counter2 +1 >>> cntO = 1 >>> numberAmbs2 = 0 >>> avgWaitTime2 = 1 >>>} >>> >>> >>> >>> >>>TotherFR = 0 >>>cnt = 1 >>>for(i in array(1:dim(ambs)[1])) >>>{ >>> for(j in array(1:dim(ambs)[2])) >>> { >>> if(ambs[i,j] != 0) >>> { >>> TotherFR[cnt] = ambs[i,j] >>> cnt = cnt +1 >>> } >>> } >>>} >>> >>>postscript("dataIAT.ps") >>>hist(IAT,30) >>>dev.off() >>> >>>postscript("simIAT.ps") >>>hist(IotherAT,30) >>>dev.off() >>> >>>postscript("dataTTR.ps") >>>hist(TTR,30) >>>dev.off() >>> >>>postscript("simTTR.ps") >>>hist(TotherTR,30) >>>dev.off() >>> >>>postscript("dataTFR.ps") >>>hist(TFR,30) >>>dev.off() >>> >>>postscript("simTFR.ps") >>>hist(TotherFR,30) >>>dev.off() >>> >>> >>>------------------------------------------------------------------------ >>> >>>______________________________________________ >>>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 -- Spencer Graves, PhD Senior Development Engineer PDF Solutions, Inc. 333 West San Carlos Street Suite 700 San Jose, CA 95110, USA [EMAIL PROTECTED] www.pdf.com <http://www.pdf.com> Tel: 408-938-4420 Fax: 408-280-7915 ______________________________________________ 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