Невозможно создать абсолютно равные разделы данных с использованием createDataPartition в R - получать 1396 и 1398 наблюдений каждый, но нужно 1397 - PullRequest
0 голосов
/ 04 января 2019

Я хорошо знаком с R, но никогда не имел этого требования, когда мне нужно было создать абсолютно равный раздел данных случайным образом, используя createDataPartition в R.

index = createDataPartition(final_ts$SAR,p=0.5, list = F)
final_test_data = final_ts[index,]
final_validation_data = final_ts[-index,]

Этот код создает два набора данных с размерами 1396 и 1398 наблюдений соответственно.,

Я удивлен, почему р = 0,5 не делает то, что должен делать.Имеет ли это какое-то отношение к результирующему набору данных, не имеющему нечетное количество наблюдений по умолчанию?Заранее спасибо!

1 Ответ

0 голосов
/ 04 января 2019

Это связано с количеством случаев переменной ответа (final_ts$SAR в вашем случае).

Например:

y <- rep(c(0,1), 10)
table(y)
y
0  1 
10 10 
# even number of cases

Теперь мы разделим:

train <- y[caret::createDataPartition(y, p=0.5,list=F)]
table(train) # we have 10 obs 
train
0 1 
5 5 

test <- y[-caret::createDataPartition(y, p=0.5,list=F)]
table(test) # we have 10 obs.
test
0 1 
5 5 

Если мы строим и пример вместо этого с нечетным числом случаев:

y <- rep(c(0,1), 11)
table(y)
y
0  1 
11 11 

У нас есть:

train <- y[caret::createDataPartition(y, p=0.5,list=F)]
table(train) # we have 12 obs.
train
0 1 
6 6 

test <- y[-caret::createDataPartition(y, p=0.5,list=F)]
table(test) # we have 10 obs.
test
0 1 
5 5 

Дополнительная информация здесь .

...