I wrote a little function called first() to help with situations like
this. It returns a 1 every time an element of a vector is different from
the previous element, and a 0 otherwise.
first <- function(x) {
L <- length(x)
c(1, 1-(x[-1]==x[-L]))
}
sd <- 1
residuals <- c(1, 2.1, 3, 4, 3, 1, 0, -4, -1)
# logical, indicating if the residual exceeds 2 standard deviations
exceed <- abs(residuals) > (2*sd)
# indices of the first exceeding residual of a series
which(first(exceed) & exceed)
Jean
gcm <lvogric@grahamcapital.com> wrote on 07/12/2012 11:07:49 AM:
> I have a graph of residuals and I am attempting to get a list of the
indexes> of each time the residual is greater than 2 standard deviations or less
than> -2 standard deviations, but only the first point of the section. And
then> I'd also need the first point where the point returns to the range
between> +/- 2 standard deviations.
> So basically if my standard deviation=1 and my residuals=c(1, 2.1, 3, 4,
3,> 1, 0, -4, -1) I want it to grab the second number, where it exceeds 2
> standard deviations and the 6th where it returns to less than 2 standard
> deviations. Also, it would grab -4 (or residuals[ 8]) and -1
(residuals[9])
[[alternative HTML version deleted]]