[R] Discover significant change in sorted vector

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


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