Я хочу запустить полиноминальную логистическую регрессию LASSO и пытаюсь создать матрицу ответов индикатора для данных моей тематической модели отзывов клиентов. Поэтому указывающей переменной являются распределения тем документа по гамма-матрице (вероятность от 0 до 1 для каждой темы, число тем теперь называется topicNum ) для каждого документа. Моя переменная ответа - это оценка, которую каждый пользователь дал с обзором (1-5 звезд). Поэтому в соответствии с this мне нужна переменная индикатора для каждой темы и звездного рейтинга следующим образом (извините за форматирование, не знаю, как правильно создавать таблицы):
1-звездные темы 1-topicNum |2-звездочные темы 1-темаNum | ... | 5-звездочные темы 1-темаNum
0 ..................... 0 |(ненулевой рейтинг в случае 2) |0 ........... |....... |.... |
Хотя мои данные выглядят так (в примере с 10 темами я буду использовать их для нескольких диапазонов тем, чтобы их число могло варьироваться):
> test_gamma[1:2, ]
Topic 1 Topic 2 Topic 3 Topic 4 Topic 5 Topic 6 Topic 7 Topic 8 Topic 9 Topic 10 docid_field overallRating
1 0.12790698 0.05813953 0.13953488 0.09302326 0.06976744 0.1279070 0.08139535 0.1279070 0.11627907 0.05813953 1 1
2 0.09677419 0.08064516 0.08064516 0.08064516 0.11290323 0.1290323 0.08064516 0.1290323 0.09677419 0.11290323 2 4
Я попытался создать матрицу нулей этих измерений (DOC_NUM x 5 * topicNum = 10) и заполнить ее, используя totalRating в качестве смещения (включая образец вычисления смещения):
> (1+ test_gamma[1, "overallRating"]*10-10):(test_gamma[1, "overallRating"]*10)
[1] 1 2 3 4 5 6 7 8 9 10
> (1+ test_gamma[2, "overallRating"]*10-10):(test_gamma[2, "overallRating"]*10)
[1] 31 32 33 34 35 36 37 38 39 40
test_indic <- matrix(0, nrow = nrow(test_gamma), ncol = 5 * 10)
for(i in 1:nrow(test_gamma)){
test_indic[i, (1+ test_gamma[i, "overallRating"]*10-10):(test_gamma[i, "overallRating"]*10)] <- test_gamma[i,1:10]
}
Вместо правильно заполненной матрицы я получаю список двойных чисел (первый - 0.12790698
и все остальные нули) и следующую ошибку:
Error in test_indic[i, (1 + test_gamma[i, "overallRating"] * 10 - 10):(test_gamma[i, :
incorrect number of subscripts on matrix
В качестве количества строк исовпадение столбцов Я не могу понять, что я делаю неправильно. Любая помощь о том, как это исправить, будет высоко ценится!