[R] Discover significant change in sorted vector

Gabor Grothendieck ggrothendieck at gmail.com
Wed Apr 22 16:16:13 CEST 2009


Or just take every 10th point.

On Wed, Apr 22, 2009 at 10:15 AM, Gabor Grothendieck
<ggrothendieck at gmail.com> wrote:
> Try playing with the h= argument of breakpoints.  Another possibility
> is to average each non-overlapping set of 10 points to reduce the
> problem size to 80 and run breakpoints on that.  Might not be 1 sec
> but would likely be much faster.
>
> On Wed, Apr 22, 2009 at 9:45 AM, Hans-Henning Gabriel
> <hanshenning.gabriel at gmail.com> wrote:
>> Gabor, initially this looked like the perfect solution, exactly what I need.
>>
>> Unfortunately it is too expensive/costly. I have vectors of length 800 and
>> more, my machine needs > 5 minutes (I aborted) to compute the breakpoints.
>> Required is computation time < 1 sec. :)
>>
>> Any other suggestions? Maybe there is another approach not that perfect as
>> from the strucchange package, but still sufficient?
>>
>> Best
>> Henning
>>
>>
>> Am 22.04.2009 um 14:55 schrieb Gabor Grothendieck:
>>
>>> Try this:
>>>
>>>> a <- c(2,3,3,5,6,8,8,9,15, 25, 34,36,36,38,41,43,44,44,46);
>>>> ix <- seq_along(a)
>>>> library(strucchange)
>>>> bp <- breakpoints(a ~ ix, h = 4)
>>>> bp
>>>
>>>        Optimal 3-segment partition:
>>>
>>> Call:
>>> breakpoints.formula(formula = a ~ ix, h = 4)
>>>
>>> Breakpoints at observation number:
>>> 7 11
>>>
>>> Corresponding to breakdates:
>>> 0.3684211 0.5789474
>>>>
>>>> plot(a ~ ix)
>>>> lines(ix, fitted(bp))
>>>
>>>
>>> On Wed, Apr 22, 2009 at 7:27 AM, Hans-Henning Gabriel
>>> <hanshenning.gabriel at gmail.com> wrote:
>>>>
>>>> Hi,
>>>>
>>>> suppose I have a simple sorted vector like this:
>>>>
>>>> a <- c(2,3,3,5,6,8,8,9,15, 25, 34,36,36,38,41,43,44,44,46);
>>>>
>>>> Is there a function in R, I can use to discover that from index 8 to
>>>> index
>>>> 11 the values are changing significantly?
>>>> The function should return a value pointing to one of the indices 8, 9,
>>>> 10
>>>> or 11. Any of them would be fine.
>>>> The difficulty is that there may be no big gap. I mean, indices 8 and 11
>>>> are
>>>> somehow "connected" by indices 9 and 10. So, it's not an option to just
>>>> search for biggest difference between the values.
>>>>
>>>> Perfect would be a function that is able to discover multiple changes if
>>>> it
>>>> is present in the data.
>>>>
>>>> Thanks!!
>>>> Henning
>>>>
>>>> ______________________________________________
>>>> R-help at r-project.org mailing list
>>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>>> PLEASE do read the posting guide
>>>> http://www.R-project.org/posting-guide.html
>>>> and provide commented, minimal, self-contained, reproducible code.
>>>>
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>
>




More information about the R-help mailing list