Создание матрицы отклика индикатора со смещением от data.frame - PullRequest
0 голосов
/ 07 октября 2019

Я хочу запустить полиноминальную логистическую регрессию 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

В качестве количества строк исовпадение столбцов Я не могу понять, что я делаю неправильно. Любая помощь о том, как это исправить, будет высоко ценится!

...