创建稀疏矩阵,然后对数据进行 运行 预测分析

Creating sparse matrix and then running predictive analysis on the data

你好 R 专家,

我是一名正在尝试学习 R 的 Stata 程序员。 我有一个数据框,其中每个行 ID 都有针对它的值 df1:

df1 <- data.frame(name=c("John", "Mary", "Joe", "Tim", "Bob", "Pat"),
                  v1=c(14,2,3,4,14,1),
                  v2=c(21,6,19,31,16,5),
                  v3=c(32,10,22,33,27,30),
                  v4=c(42,17,45,39,34,35),
                  v5=c(98,35,66,0,78,99),
                  v6=c(117,49,0,0, 89,186))

每个访客 ID 的列中的值范围从 1 到 1000。这些基本上是每个访客 ID 在 1000 天内看医生的天数。部分患者症状消失后不再就诊,部分患者继续服药,按医嘱定期复诊。有的患者隔了很久又复发了。

我想创建一个稀疏矩阵,包含 1 到 1000 天内拜访过医生的所有 ID。您能否建议如何创建稀疏矩阵。它在 Stata 中非常简单直接,但我在 R 中想不出办法。

最终结果应采用以下形式:

name    1   2   3   4   5   6   10  14  16  17  19  21
John                                1               1
Mary        1               1   1           1       
Joe         1                               1

创建稀疏矩阵后,我必须预测患者下次去看医生的时间。 我计划创建一个稀疏矩阵,然后创建一个计算的最近两次连续访问之间差异的变量,然后对其使用逻辑回归。是否可以生成更多 KPI 以仅使用给定信息进行稳健的分析?有人可以建议这个想法是否正确或者是否有更好的方法来实现它。

提前致谢。

关于如何创建稀疏矩阵的问题,您提供了一个编码示例,很容易回答。我认为您不需要安装该软件包,因为它属于 "recommended" 随任何发行版一起提供的软件包类别。

library(Matrix)
help(pac=Matrix)
M <-  Matrix(data.matrix( df1[-1]), sparse=TRUE)  # remove character column first
6 x 6 sparse Matrix of class "dgCMatrix"
     v1 v2 v3 v4 v5  v6
[1,] 14 21 32 42 98 117
[2,]  2  6 10 17 35  49
[3,]  3 19 22 45 66   .
[4,]  4 31 33 39  .   .
[5,] 14 16 27 34 78  89
[6,]  1  5 30 35 99 186

修改后的问题:

# first create index vectors
xix <- c( row(data.matrix(df1[-1]))[!is.na(df1[-1])])
xjy <- c(df1[-1][!is.na(df1[-1])])

然后为索引参数提供非 NA 值和足够的 1 来填充索引位置:

 M <- spMatrix(6, 186, i = xix, j=xjy, x=rep(1,length(c( row(data.matrix(df1[-1]))[!is.na(df1[-1])])))) 
> str(M)
Formal class 'dgTMatrix' [package "Matrix"] with 6 slots
  ..@ i       : int [1:33] 0 1 2 3 4 5 0 1 2 3 ...
  ..@ j       : int [1:33] 13 1 2 3 13 0 20 5 18 30 ...
  ..@ Dim     : int [1:2] 6 186
  ..@ Dimnames:List of 2
  .. ..$ : NULL
  .. ..$ : NULL
  ..@ x       : num [1:33] 1 1 1 1 1 1 1 1 1 1 ...
  ..@ factors : list()
> M[1:6, 1:25]  # enough output to show success
6 x 25 sparse Matrix of class "dgTMatrix"

[1,] . . . . . . . . . . . . . 1 . . . . . . 1 . . . .
[2,] . 1 . . . 1 . . . 1 . . . . . . 1 . . . . . . . .
[3,] . . 1 . . . . . . . . . . . . . . . 1 . . 1 . . .
[4,] . . . 1 . . . . . . . . . . . . . . . . . . . . .
[5,] . . . . . . . . . . . . . 1 . 1 . . . . . . . . .
[6,] 1 . . . 1 . . . . . . . . . . . . . . . . . . . .
>