我正在创建一个简单的基于群组的用户留存模型,该模型基于每天出现的新用户数量,以及用户在第 0 天 (100%)、第 1 天、第 2 天等重新出现的可能性。我想知道每天活跃的用户数量。我正在尝试对此进行矢量化并陷入困境。这是一个玩具模型。
rvec <- c(1, .8, .4); #retention for day 0, 1,2 (day 0 = 100%, and so forth)
newvec <- c(10, 10, 10); #new joiners for day 0, 1, 2 (might be different)
playernumbers <- matrix(0, nrow = 3, ncol = 3);
# I want to fill matrix playernumbers such that sum of each row gives
# the total playernumbers on day rownumber-1
# here is a brute force method (could be simplified via a loop or two)
# but what I am puzzled about is whether there is a way to fully vectorise it
playernumbers[1,1] <- rvec[1] * newvec[1];
playernumbers[2,1] <- rvec[2] * newvec[1];
playernumbers[3,1] <- rvec[3] * newvec[1];
playernumbers[2,2] <- rvec[1] * newvec[2];
playernumbers[3,2] <- rvec[2] * newvec[2];
playernumbers[3,3] <- rvec[1] * newvec[3];
playernumbers
我无法弄清楚如何完全矢量化它。我可以看到我可以如何按列进行操作,依次使用每个列号来指示(a)要更新哪些行(列号:nrows),以及(b)要乘以哪个 newvec 索引值。但我不确定这是否值得做,因为对我来说循环更清晰。但是我错过了一个完全矢量化的形式吗?谢谢!