I think not so hard question

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

I think not so hard question

mark leeds-4
I'm sorry to bother this list so much
But I haven't programmed in
A while and I'm struggling.
 
I have a vector in R of 1's and -1's
And I want to use a streak of size Y
To predict that the same value will
Be next.
 
So, suppose Y = 3. Then,  if there is a streak of three
ones in a row, then I will predict that the next value is
a 1. But, if there is a streak of 3 -1's in a row,
then I will predict that a -1 is next. Otherwise,
I don't predict anything.
 
I am really new to R and kind of struggling
And I was wondering if someone could show
how to do this ?
 
In other words, given a vector of -1's
And 1's,  I am unable ( I've been trying
For 2 days ) to create a new vector that
Has the predictions in it at the appropriate
places ? Thanks.
 
 


**********************************************************************
This email and any files transmitted with it are confidentia...{{dropped}}

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Reply | Threaded
Open this post in threaded view
|

Re: I think not so hard question

Liaw, Andy
Mark,

It's a bit unclear whether you're looking for a run of exactly 3, or at
least 3.  If it's exactly 3, what Prof. Koenker suggested (using rle())
should help you a lot.  If you want runs of at least 3, it should work
similarly as well.

> set.seed(1)
> (x <- sample(c(-1, 1), 100, replace=TRUE))
  [1] -1 -1  1  1 -1  1  1  1  1 -1 -1 -1  1 -1  1 -1  1  1 -1  1  1 -1  1
-1 -1 -1
 [27] -1 -1  1 -1 -1  1 -1 -1  1  1  1 -1  1 -1  1  1  1  1  1  1 -1 -1  1
1 -1  1
 [53] -1 -1 -1 -1 -1  1  1 -1  1 -1 -1 -1  1 -1 -1  1 -1  1 -1  1 -1 -1 -1
1  1 -1
 [79]  1  1 -1  1 -1 -1  1 -1  1 -1 -1 -1 -1 -1  1  1  1  1 -1 -1  1  1
> r <- rle(x)$length
> p <- which(r == 3)
> idx <- cumsum(r)[p] - 2
> sapply(idx, function(i) x[i:(i+2)])
     [,1] [,2] [,3] [,4]
[1,]   -1    1   -1   -1
[2,]   -1    1   -1   -1
[3,]   -1    1   -1   -1
> idx
[1] 10 35 62 73

Andy


From: Mark Leeds

>
> I'm sorry to bother this list so much
> But I haven't programmed in
> A while and I'm struggling.
>  
> I have a vector in R of 1's and -1's
> And I want to use a streak of size Y
> To predict that the same value will
> Be next.
>  
> So, suppose Y = 3. Then,  if there is a streak of three
> ones in a row, then I will predict that the next value is
> a 1. But, if there is a streak of 3 -1's in a row,
> then I will predict that a -1 is next. Otherwise,
> I don't predict anything.
>  
> I am really new to R and kind of struggling
> And I was wondering if someone could show
> how to do this ?
>  
> In other words, given a vector of -1's
> And 1's,  I am unable ( I've been trying
> For 2 days ) to create a new vector that
> Has the predictions in it at the appropriate
> places ? Thanks.
>  
>  
>
>
> **********************************************************************
> This email and any files transmitted with it are
> confidentia...{{dropped}}
>
> ______________________________________________
> [hidden email] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide!
> http://www.R-project.org/posting-guide.html
>
>

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html