tests/testthat/test-train_test.R

context("Tests for train_test function")
library(binclass)

K = 4 # Number of predictors
n = 90 # Sample size
# Create data
y = sample( c( 'Yes', 'No' ), n, replace = T, prob = c(.3,.7) )
y = as.factor(y)
X = matrix( rnorm( n*K ), n, K )
# Set column names
colnames( X ) = paste( 'IV', 1:ncol(X), sep = '' )
# Create index for cross validation
index = c( rep( 1, n/3 ), rep( 2, 2*n/3 ) )

test_that( "train_test runs without error", {
  expect_silent( train_test( 1, index, y, X ) )
})

dat = train_test( 1, index, y, X )
test_that( "train_test class works", {
  expect_true( is.train_test( dat ) )
})

test_that( "size method works", {
  expect_equal( size( dat ), 60 )
  expect_equal( size( dat, F ), c( 60, 4 ) )
  expect_equal( size( dat, train = F ), 30 )
  expect_equal( size( dat, F, F ), c( 30, 4 ) )
})

test_that( "subset method works", {
  expect_equal( y[ index == 2 ], subset( dat ) )
  expect_equal( y[ index == 1 ], subset( dat, train = F ) )

  zX = X[ index == 2, ]
  m = colMeans( zX )
  s = apply( zX, 2, sd )
  zX = zX - matrix( m, nrow(zX), ncol(X), byrow = T )
  zX = zX/matrix( s, nrow(zX), ncol(X), byrow = T )
  expect_equal( zX, subset( dat, F ) )

  zX = X[ index == 1, ]
  zX = zX - matrix( m, nrow(zX), ncol(X), byrow = T )
  zX = zX/matrix( s, nrow(zX), ncol(X), byrow = T )
  expect_equal( zX, subset( dat, F, F ) )
})

test_that( "levels method works", {
  expect_equal( levels(dat), levels(y) )
})

test_that( "dimnames method works", {
  expect_equal( dimnames(dat), colnames( X ) )
})

levs = levels( y )
test_that( "as.integer method works", {
  y_int = as.numeric( y[ index == 2 ] == levs[1] )
  expect_equal( as.integer( dat ), y_int )
  y_int = as.numeric( y[ index == 1 ] == levs[1] )
  expect_equal( as.integer( dat, F ), y_int )
})

test_that( "print method works", {
  expect_output( print( dat ) )
})

df_train = as.data.frame( dat )
df_test = as.data.frame( dat, train = F )
cmp_train = data.frame(
  y = as.integer( dat, T )
)
cmp_train = cbind( cmp_train, subset( dat, F, T ) )
cmp_test = data.frame(
  y = as.integer( dat, F )
)
cmp_test = cbind( cmp_test, subset( dat, F, F ) )
test_that( "as.data.frame method works", {
  expect_equal( df_train, cmp_train )
  expect_equal( df_test, cmp_test )
})
rettopnivek/binclass documentation built on May 13, 2019, 4:46 p.m.