Therneau, Terry M., Ph.D.
2015-Oct-14 12:49 UTC
[R] Fitting a curve to weibull distribution in R using nls
On 10/14/2015 05:00 AM, r-help-request at r-project.org wrote:> I am trying to fit this data to a weibull distribution: > > My y variable is:1 1 1 4 7 20 7 14 19 15 18 3 4 1 3 1 1 1 > 1 1 1 1 1 1 > > and x variable is:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 > 19 20 21 22 23 24 >One could always use existing R functions that fit a Weibull regression, instead of reinventing the wheel. library(survival) y <- scan() 1 1 1 4 7 20 7 14 19 15 18 3 4 1 3 1 1 1 1 1 1 1 1 1 wfit <- survreg(Surv(1:24) ~ 1, weights=y, dist="weibull") wfit Call: survreg(formula = Surv(1:24) ~ 1, weights = y, dist = "weibull") Coefficients: (Intercept) 2.352121 Scale= 0.4130924 Loglik(model)= -351.4 Loglik(intercept only)= -351.4 n= 24 zz <- seq(0, 25, length=100) plot(zz, dsurvreg(zz, 2.352121, 0.4130924), col=2, type='l', ylim=c(0, .15), xlab="Value", ylab="Density") points(1:24, y/sum(y)) ----- There are a half dozen ways to parameterize a Weibull distribution; the location-scale form used by survreg is one of the less common. See help(survreg) for more information -- look at the example near the bottom of the page. Terry Therneau