我正在使用BTYD模型来生成有关客户未来交易的预测。不幸的是,由于使用了mcmc方法,因此我无法对整个客户群(数十万)进行预测,因此我不得不将基准群分为多个随机样本,并对每个样本执行几次此模型的运行以检索预测。
我的想法是使用循环执行以下操作:
- 从整个库中检索长度为10,000的随机样本(我们将此数据框称为“数据”)
- 将结果存储在名为“ sample1”的对象中
- 现在我们必须回到“数据”,排除“ sample1”中的客户并将新结果存储在“数据”中。
- 从新的“数据”中获取新的随机样本(“ sample2”)
- 创建一个新版本的“数据”,其中不包括“ sample2”(和“ sample1”)中包括的所有客户。
- ...继续此循环,直到完成基础并创建了包含整个基础的N个样本。
(每个ID仅可包含在一个样本中)。
不幸的是,我的代码似乎没有按照我想要的方式工作(此刻我对循环不是很好。
getwd()
data<-read.csv("MOCK_DATA (1).csv")
# this is a fake dataset of 1000 rows that contains only 2 columns:
# customer ID (column name: "id") and a random number (column name "value").
# Every customer ID appears only once in the dataset.
head(data)
set.sample.size<-100
num.cycles<-ceiling(nrow(data)/set.sample.size)
for(i in 1:(num.cycles)) {
nam <- paste("sample_",i,sep = "")
assign(nam,data[sample(nrow(data),set.sample.size),])
data<-data[!(data$id %in% nam$id),]
}
此代码生成以下错误: nam $ id错误:$运算符对原子向量无效
我希望获得10个名为“ sample_1” ..“ sample_10”的对象,每个对象均由原始数据中的100个随机ID组成,但全部都是唯一的(10个样本之间没有ID)。