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 <[email protected]> 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]]
______________________________________________
[email protected] 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.