[R] truncpareto() - doesn't like my data and odd error message

peter dalgaard pdalgd at gmail.com
Thu Mar 10 21:29:29 CET 2016


Actually, the issue is that the left hand side of the model formula should be the name of the variable under consideration. If you write y ~ 1 there had better be a "y", but without the renaming you could also have used H_to_fit.Height ~ 1.

-pd


> On 10 Mar 2016, at 19:03 , John Hillier <J.Hillier at lboro.ac.uk> wrote:
> 
> Dear Peter,
> 
> Thank you. Apolgies for not looking closer.  It is the end of a long day. Fixed now, and I have learnt more about correctly interpreting R's manual pages.
> 
> For the record .... 
> 
> Summary: If input to truncpareto() is not explicitly called 'y' it can produce error messages about the values 'lower', which might be confusing.  So, ensure input is called 'y', and that 'lower' and 'upper' are just outside the range of y.
> 
> John
> 
> -------------------------
> Dr John Hillier
> Senior Lecturer - Physical Geography
> Loughborough University
> 01509 223727
> 
> ________________________________________
> From: peter dalgaard <pdalgd at gmail.com>
> Sent: 10 March 2016 17:49
> To: John Hillier
> Cc: r-help at r-project.org
> Subject: Re: [R] truncpareto() - doesn't like my data and odd error message
> 
> Look closer....
> 
> -pd
> 
> 
>> On 10 Mar 2016, at 18:41 , John Hillier <J.Hillier at lboro.ac.uk> wrote:
>> 
>> Thank you Peter,
>> 
>> Yes, it seems to do the same even if I simultaneously make that change.  Output below.
>> 
>>> pdataH <- data.frame(y = H_to_fit$Height)
>>> summary(pdataH)
>>      y
>> Min.   :2000
>> 1st Qu.:2281
>> Median :2666
>> Mean   :2825
>> 3rd Qu.:3212
>> Max.   :4794
>>> fit3 <- vglm(y ~ 1, truncpareto(1999, 4794), data = pdataH, trace = TRUE)
>> Error in eval(expr, envir, enclos) :
>> the value of argument 'upper' is too low (requires 'max(y) < upper')
>> 
>> -------------------------
>> Dr John Hillier
>> Senior Lecturer - Physical Geography
>> Loughborough University
>> 01509 223727
>> 
>> ________________________________________
>> From: peter dalgaard <pdalgd at gmail.com>
>> Sent: 10 March 2016 09:36
>> To: John Hillier
>> Cc: r-help at r-project.org
>> Subject: Re: [R] truncpareto() - doesn't like my data and odd error message
>> 
>> Also if you simultaneously change the 2000 to say 1999?
>> 
>> -p
>> 
>> On 10 Mar 2016, at 09:22 , John Hillier <J.Hillier at lboro.ac.uk> wrote:
>> 
>>> Thank you Peter,
>>> 
>>> I believe this might be the way the error message is hard coded (i.e. it's always y to describe the input).  Anyway, I changed the first line to
>>>> pdataH <- data.frame(y = H_to_fit$Height)
>>> This makes the input 'y' instead of 'H_to_fit.Height', but makes no difference to the outcome/error message.
>>> 
>>> John
>>> 
>>> -------------------------
>>> Dr John Hillier
>>> Senior Lecturer - Physical Geography
>>> Loughborough University
>>> 01509 223727
>>> 
>>> ________________________________________
>>> From: peter dalgaard <pdalgd at gmail.com>
>>> Sent: 09 March 2016 19:58
>>> To: John Hillier
>>> Cc: r-help at r-project.org
>>> Subject: Re: [R] truncpareto() - doesn't like my data and odd error message
>>> 
>>>> On 09 Mar 2016, at 18:52 , John Hillier <J.Hillier at lboro.ac.uk> wrote:
>>>> 
>>>> Dear All,
>>>> 
>>>> 
>>>> I am attempting to describe a distribution of height data.  It appears roughly linear on a log-log plot, so Pareto seems sensible.  However, the data are only reliable in a limited range (e.g. 2000 to 4800 m). So, I would like to fit a Pareto distribution to the reliable (i.e. truncated) section of the data.
>>>> 
>>>> 
>>>> I found truncpareto(), and implemented one of its example uses successfully.  Specifically, the third one at http://www.inside-r.org/packages/cran/vgam/docs/paretoff (also see p.s.).
>>>> 
>>>> 
>>>> When I try to run my data, I get the output below. Inputs shown with chevrons.
>>>> 
>>>> 
>>>>> pdataH <- data.frame(H_to_fit$Height)
>>>>> summary(pdataH)
>>>> H_to_fit.Height
>>>> Min.   :2000
>>>> 1st Qu.:2281
>>>> 
>>>> Median :2666
>>>> Mean   :2825
>>>> 3rd Qu.:3212
>>>> Max.   :4794
>>>>> fit3 <- vglm(y ~ 1, truncpareto(2000, 4794), data = pdataH, trace = TRUE)
>>>> Error in eval(expr, envir, enclos) :
>>>> the value of argument 'lower' is too high (requires '0 < lower < min(y)')
>>>> 
>>>> 
>>>> This is odd as the usage format is - truncpareto(lower, upper), and varying 2000 to 1900 and 2100 makes no difference. Neither do smaller or larger variations. From the summary I think that my lowest input is 2000, which I am taking as min(y). I have also played with the upper limit.  pdataH has 2117 observations in it.
>>>> 
>>>> 
>>>> Is this a data format thing? i.e. of pdataH (a tried a few things, but to no avail)
>>>> 
>>> 
>>> Umm, it doesn't seem to have a column called "y"?
>>> 
>>> --
>>> Peter Dalgaard, Professor,
>>> Center for Statistics, Copenhagen Business School
>>> Solbjerg Plads 3, 2000 Frederiksberg, Denmark
>>> Phone: (+45)38153501
>>> Office: A 4.23
>>> Email: pd.mes at cbs.dk  Priv: PDalgd at gmail.com
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>> 
>> --
>> Peter Dalgaard, Professor,
>> Center for Statistics, Copenhagen Business School
>> Solbjerg Plads 3, 2000 Frederiksberg, Denmark
>> Phone: (+45)38153501
>> Office: A 4.23
>> Email: pd.mes at cbs.dk  Priv: PDalgd at gmail.com
>> 
> 
> --
> Peter Dalgaard, Professor,
> Center for Statistics, Copenhagen Business School
> Solbjerg Plads 3, 2000 Frederiksberg, Denmark
> Phone: (+45)38153501
> Office: A 4.23
> Email: pd.mes at cbs.dk  Priv: PDalgd at gmail.com
> 
> 
> 
> 
> 
> 
> 
> 
> 

-- 
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Office: A 4.23
Email: pd.mes at cbs.dk  Priv: PDalgd at gmail.com



More information about the R-help mailing list