В моем наборе данных есть столбец с данными NPS, где числа меняются от 0 до 10. 10 и 9 известны как «Промоутеры», 8 и 7 известны как «Пассивы», а 6-0 известны как «Хулители». , Я планирую приспособить модель, рассматривая переменную NPS как двоичную (Промоутеры и Не промоутеры). Таким образом, я хочу разделить свои данные на обучающие и тестовые наборы перед выполнением glm. Чтобы обучающий набор был репрезентативным, я стараюсь, чтобы в наборе данных было 50% промоутеров и 50% не промоутеров.
Мой первый вопрос: это правильный подход?
Второй вопрос: я попытался из приведенного ниже кода разделить набор данных и смог создать обучающий набор.
table(mydata$NPS)
# 0 1 2 3 4 5 6 7 8 9 10
# 18 31 49 62 90 217 514 2332 10600 6557 2003
nrow(mydata) # = 22473
#total number of promoters = 8560
#total number of non-promoters = 13913
8560*0.8 #=6848 80% of promoters count
#all the promoters
data_promoters<-mydata[(mydata$NPS==10 | mydata$NPS==9),]
#all the non promoters
data_nonPromoters<-mydata[(mydata$NPS!=10 & mydata$NPS!=9),]
dim(data_promoters) #8560 32
dim(data_nonPromoters) #13913 32
set.seed(100)
sample_promoters <- data_promoters[sample(1:nrow(data_promoters),6848),]
sample_nonPromoters <- data_nonPromoters[sample(1:nrow(data_nonPromoters),6848),]
#train dataset
train_mydata <- rbind(sample_promoters, sample_nonPromoters)
head(train_mydata)
tail(train_mydata)
dim(train_mydata) #13696 32
#test dataset
test_mydata<-mydata[-train_mydata, ]
При формировании тестового набора, как указано выше, я получаю следующую ошибку. Не могли бы вы помочь мне исправить это? Большое спасибо!
Error in `[.default`(xj, i) : invalid subscript type 'list'
In addition: Warning messages:
1: In Ops.factor(left) : ‘-’ not meaningful for factors
2: In Ops.factor(left) : ‘-’ not meaningful for factors
3: In Ops.factor(left) : ‘-’ not meaningful for factors
4: In Ops.factor(left) : ‘-’ not meaningful for factors
5: In Ops.factor(left) : ‘-’ not meaningful for factors