for(i in 1:nsimu){ aa=data[order(runif(ss)),] A0=aa[c(1:ss0),] A1=aa[-c(1:ss0),] model.1=glm(是否点击 ~ 平台编码+ 竞拍底价 + 是否为全插屏广告 + 手机运营商 + 网络状况 + 设备制造商 + 时段 ,family=binomial(link=logit),data=A0) model.2=glm(是否点击 ~ 平台编码+ 竞拍底价 + 是否为全插屏广告 + 设备制造商 + 时段 ,family=binomial(link=logit),data=A0) model.3=glm(是否点击 ~ 是否为全插屏广告 ,family=binomial(link=logit),data=A0) pred.1=predict(model.1,A1) pred.2=predict(model.2,A1) pred.3=predict(model.3,A1) Y=A1$是否点击 auc.1=roc(Y,pred.1)$auc auc.2=roc(Y,pred.2)$auc auc.3=roc(Y,pred.3)$auc AUC[i,]=c(auc.1,auc.2,auc.3) }
时间: 2024-01-17 22:04:41 浏览: 61
Java基础编程:求s=a+aa+aaa+aaaa+aa...a的值
这段代码中,首先通过`order(runif(ss))`来产生一个长度为`ss`的随机序列,然后使用该序列对原始数据`data`进行随机重排,得到一个新的数据集`aa`。接着,将`aa`按照`ss0`的比例分成两个数据集`A0`和`A1`,用`A0`来训练模型,用`A1`来测试模型预测结果。其中,`是否点击`为因变量,`平台编码`、`竞拍底价`、`是否为全插屏广告`、`手机运营商`、`网络状况`、`设备制造商`、`时段`为自变量。接着,使用`glm`函数来建立三个不同的逻辑回归模型,分别为`model.1`、`model.2`、`model.3`。其中,`model.1`包含所有自变量,`model.2`去掉了`手机运营商`和`网络状况`两个变量,`model.3`只包含`是否为全插屏广告`一个变量。使用`predict`函数对`A1`数据集进行预测,得到三个模型的预测结果`pred.1`、`pred.2`、`pred.3`。接着使用`roc`函数计算出三个模型的AUC值,存放在`AUC`矩阵中的第`i`行。这个过程将重复运行`nsimu`次,得到三个模型的AUC值的分布情况。
阅读全文