Skip to content

Commit

Permalink
test for finite in MAD(x) USGS-R#37
Browse files Browse the repository at this point in the history
  • Loading branch information
Jordan S Read committed Oct 22, 2015
1 parent bb93a21 commit 599b871
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 6 deletions.
12 changes: 6 additions & 6 deletions R/custom-functions.R
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@
MAD.values <- function(vals, b = 1.4826){
# b: assuming a normal distribution
# from Huber 1981:
med.val <- median(vals) # median of the input data
u.i <- is.finite(vals)
med.val <- median(vals[u.i]) # median of the input data
abs.med.diff <- abs(vals-med.val) # absolute values minus med
abs.med <- median(abs.med.diff) # median of these values
abs.med <- median(abs.med.diff[u.i]) # median of these values

MAD <- b*abs.med

MAD.normalized <- abs.med.diff/MAD # division by zero

MAD.normalized[is.na(MAD.normalized)] = 0 # doesn't protect against NAs that enter in data.in
MAD.normalized = rep(NA,length(vals))
MAD.normalized[u.i] <- abs.med.diff[u.i]/MAD # division by zero
MAD.normalized[is.na(MAD.normalized)] <- 0
return(MAD.normalized)
}

Expand Down
10 changes: 10 additions & 0 deletions tests/testthat/test-simple_rules.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
context("Test simple rules")

values.1 <- c(seq(1,12),100,NA,NA)
values.2 <- c(seq(1,12),100,1,1)
values.3 <- c(seq(1,12),100,1/0,1)
test_that("MAD(x)", {
expect_true(MAD(values.1)[13] > 3)
expect_true(MAD(values.2)[13] > 3)
expect_true(MAD(values.3)[13] > 3)
})

0 comments on commit 599b871

Please sign in to comment.