# Re: [R] betareg help

From: Achim Zeileis <Achim.Zeileis_at_uibk.ac.at>
Date: Sun, 13 Mar 2011 16:24:20 +0100 (CET)

On Sat, 12 Mar 2011, Vlatka Matkovic Puljic wrote:

As Ben said previously: The full data would have been more useful.

However, I've had a look at the response and even a regression with an intercept only had the same problem.

R> betareg(cond ~ 1, data = results)
Error in optim(par = start, fn = loglikfun, gr = gradfun, method = method, : initial value in 'vmmin' is not finite

The reason is that the estimate of the starting value of the precision parameter is negative. I'll have a look at whether I can fix that in betareg(). For the moment, please simply provide different starting values, e.g., you could use the results from an OLS regression for the mean and some constant for the precision parameter:

R> cf <- coef(lm(qlogis(cond) ~ 1, data = results)) R> betareg(cond ~ 1, data = results, start = list(mean = cf, precision = 1))

Call:
betareg(formula = cond ~ 1, data = results, start = list(mean = cf, precision = 1))

Coefficients (mean model with logit link): (Intercept)

-0.5829

Phi coefficients (precision model with identity link): (phi)
1.145

The source of the negative precision estimate seems to stem from the large amount of observations with the minimal value 0.001. I suspect that these were zeros in the original coding. It may be worth to try a hurdle-type model, i.e., adopt a two-part model: (1) model zeros-vs-non-zeros via a glm(..., family = binomial). (2) model non-zeros only via betareg().

hth,
Z

> results\$cond
> [1] 0.001 0.001 0.001 0.001 0.001 0.001 0.001 0.001 0.001 0.001 0.001 0.001
> [13] 0.001 0.001 0.001 0.001 0.001 0.001 0.001 0.001 0.001 0.001 0.001 0.001
> [25] 0.001 0.001 0.001 0.001 0.001 0.001 0.001 0.001 0.001 0.001 0.001 0.001
> [37] 0.001 0.001 0.020 0.020 0.020 0.030 0.030 0.050 0.050 0.050 0.050 0.050
> [49] 0.050 0.050 0.050 0.050 0.060 0.060 0.060 0.070 0.070 0.070 0.070 0.080
> [61] 0.090 0.100 0.100 0.100 0.100 0.100 0.100 0.120 0.120 0.130 0.130 0.140
> [73] 0.160 0.160 0.170 0.170 0.180 0.180 0.200 0.200 0.210 0.210 0.210 0.220
> [85] 0.230 0.250 0.250 0.250 0.250 0.270 0.280 0.300 0.300 0.300 0.300 0.300
> [97] 0.310 0.320 0.330 0.340 0.350 0.350 0.350 0.360 0.400 0.430 0.430 0.450
> [109] 0.450 0.450 0.450 0.450 0.450 0.450 0.450 0.450 0.450 0.460 0.470
> 0.470
> [121] 0.470 0.470 0.480 0.490 0.490 0.500 0.500 0.500 0.500 0.500 0.500
> 0.500
> [133] 0.500 0.500 0.500 0.520 0.530 0.550 0.550 0.550 0.560 0.600 0.600
> 0.600
> [145] 0.600 0.600 0.620 0.640 0.650 0.650 0.650 0.650 0.660 0.680 0.680
> 0.680
> [157] 0.680 0.700 0.700 0.700 0.700 0.700 0.700 0.710 0.740 0.750 0.750
> 0.750
> [169] 0.750 0.760 0.760 0.770 0.780 0.800 0.800 0.800 0.800 0.800 0.810
> 0.820
> [181] 0.820 0.830 0.830 0.840 0.850 0.850 0.850 0.850 0.860 0.870 0.870
> 0.870
> [193] 0.900 0.900 0.900 0.900 0.900 0.910 0.920 0.920 0.930 0.930 0.950
> 0.950
> [205] 0.950 0.960 0.980 0.980 0.999
>
> 2011/3/12 Vlatka Matkovic Puljic <v.matkovic.puljic_at_gmail.com>
>
>> Dear R users,
>>
>> I'm trying to do betareg on my dataset.
>> Dependent variable is not normally distributed and is proportion (of condom
>> use (0,1)).
>> But I'm having problems:
>>
>> gyl<-betareg(cond ~ alcoh + drug, data=results)
>> Error in optim(par = start, fn = loglikfun, gr = gradfun, method = method,
>> :
>> initial value in 'vmmin' is not finite
>>
>> Why is R returning me error in optim()?
>> What should I do?
>>
>>
>>
>>
>>
>> --
>> **************************
>> Vlatka Matkovic Puljic
>> +32/ 485/ 453340
>>
>>
>
>
> --
> **************************
> Vlatka Matkovic Puljic
> +32/ 485/ 453340
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help_at_r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help