毎日出現する新規ユーザーの数と、ユーザーが 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 インデックス値を乗算するかを示すために、列ごとにそれを行う方法を確認できます。しかし、ループがより明確であるため、これを行う価値があるかどうかはわかりません。しかし、私が見逃している完全にベクトル化されたフォームはありますか? ありがとう!