R irba разреженное представление данных - PullRequest
3 голосов
/ 08 марта 2019

Пожалуйста, дайте мне знать, если я просто делаю это неправильно ...

У меня есть 47 194 строки, числовая матрица из 27 столбцов с некоторыми пропущенными значениями.Я пытаюсь использовать irlba для факторинга матрицы.Во всех предыдущих проектах R я использовал NA, чтобы указать недостающие данные.Когда я делаю с irlba, я получаю ошибку, что данные отсутствуют.Как указать, что значение отсутствует и что irlba должна игнорировать его при факторинге матрицы?

Примечание: документация для irlba не содержит разреженных данных.Каждый элемент имеет значение.Есть примеры со значениями нуля, но я не могу этого сделать, потому что это будет учитывать значение нуля, а не игнорировать его.

Пример кода по запросу:

M = matrix(c(1,2,3,4,NA,6,7,8,9), nrow(3))
S = irlba(M,2)

Iожидать, что irlba распознает NA как отсутствующее значение и игнорирует его.Вместо этого он терпит неудачу и заявляет, что M содержит пропущенное значение.Я пробовал ноль, пустое значение и т. Д. Я считаю, что есть специальное обозначение «Игнорировать этот элемент», которого я раньше не видел.

1 Ответ

3 голосов
/ 08 марта 2019

Вместо использования irlba я обнаружил, что SVDmiss выполняет ту же функцию.Учитывая простую матрицу, такую ​​как:

M = matrix(c(1,2,3,4,NA,6,7,8,9), nrow=3)

SVDmiss даст вам SVD и заполненную матрицу:

S = SVDmiss(M)

SVD хранится в $ svd как $ u, $d и $ v.

S$svd$u
           [,1]        [,2]       [,3]
[1,] -0.4796712  0.77669099  0.4082483
[2,] -0.5723678  0.07568647 -0.8164966
[3,] -0.6650644 -0.62531805  0.4082483
S$svd$d
[1] 1.684810e+01 1.068370e+00 5.039188e-17
S$svd$v
           [,1]       [,2]       [,3]
[1,] -0.2148372 -0.8872307 -0.4082483
[2,] -0.5205874 -0.2496440  0.8164966
[3,] -0.8263375  0.3879428 -0.4082483

Я могу воссоздать M, умножив множители: S $ svd $ u% % diag (S $ svd $ d)% % t (S$ svd $ v) [, 1] [, 2] [, 3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9

Но я неМне нужно сделать это, потому что я SVDfill также дает мне вмененную / оценочную матрицу в $ Xfill

S$Xfill
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9

Эта функция находится в пакете SpatioTemporal.На случай, если вы не установили пакеты, установите пакет, используя:

install.package('SpatioTemporal')

, а затем загрузите его, когда вам это нужно, используя:

library(SpatioTemporal)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...