国内个人网站,2023企业所得税300万以上,北京房屋装修公司哪家好,学会网站建设项目美国国家健康与营养调查#xff08; NHANES, National Health and Nutrition Examination Survey#xff09;是一项基于人群的横断面调查#xff0c;旨在收集有关美国家庭人口健康和营养的信息。 地址为#xff1a;https://wwwn.cdc.gov/nchs/nhanes/Default.aspx 既往咱们…美国国家健康与营养调查 NHANES, National Health and Nutrition Examination Survey是一项基于人群的横断面调查旨在收集有关美国家庭人口健康和营养的信息。 地址为https://wwwn.cdc.gov/nchs/nhanes/Default.aspx 既往咱们通过多篇文章对复杂加权数据的线性模型、逻辑回归模型、生存分析模型进行了分析。我们在建立数据模型后通常希望在外部数据验证模型的检验能力。然而当没有外部数据可以验证的时候交叉验证也不失为一种方法。交叉验验证交叉验证则是一种评估模型泛化能力的方法广泛应用中于数证据采挖掘和机器学习领域在交叉验证通常将数据集分为两部分一部分为训练集用于建立预测模型另一部分为测试集用于测试该模型的泛化能力。 咱们既往文章《基于R语言进行K折交叉验证》介绍了普通数据交叉验证今天咱们来介绍一下使用surveyCV包进行复杂加权数据交叉验证 该包通过在创建 CV 折叠以及计算测试集损失估计时考虑分层、聚类、FPC 的调查权重MSE均方误差对复杂的调查数据实现交叉验证 (CV)。模型或逻辑模型的二元交叉熵。 咱们先导入R包和数据
library(surveyCV)
library(survey)
library(ISLR)
data(api)这次使用survey自带的加州学生的数据包含有学生的成绩和其他数据。这个数据集带有6个数据咱们使用的是apistrat数据 假设咱们想了解api00和ell线性关系nfolds代表你想用多少折其他都是一些调查函数的参数。 咱们先写出它的函数这是一个默认线性函数
a-api00~ell
cv.svy(apistrat, a,nfolds 10 strataID stype, weightsID pw, fpcID fpc)这样结果就出来了这里的mean相当于MSE的平均值表示误差的平均值它可以有助于改善我们的模型它和单用svymean函数这种算法是完全不一样的 如果咱们想了解多个模型
cv.svy(apistrat, c(api00~ell,api00~ellmeals,api00~ellmealsmobility),nfolds 10, strataID stype, weightsID pw, fpcID fpc) 这样就轻松出结果了非常方便好用。我们可以看到添加协变量以后MSE出现明显变化变小了表明添加协变量有助于改善MSE。 如果我们想指定集群而不是分层更改一下clusterID这个变量也非常方便
cv.svy(apiclus1, c(api00~ell,api00~ellmeals,api00~ellmealsmobility),nfolds 10, clusterID dnum, weightsID pw, fpcID fpc)如果咱们是有调查函数的咱们需要用到cv.svydesign这个函数指定一下就可以了
dstrat - svydesign(id ~1, strata ~stype, weights ~pw, data apistrat, fpc ~fpc)
cv.svydesign(formulae c(api00~ell,api00~ellmeals,api00~ellmealsmobility),design_object dstrat, nfolds 10)如果是已经生成了svyglm模型的咱们需要使用cv.svyglm这个函数指定
glmstrat - svyglm(api00 ~ ellmealsmobility, design dstrat)
cv.svyglm(glmstrat, nfolds 10)如果咱们是逻辑回归而不是线性回归先生成一个调查函数
library(splines)
NSFG.svydes - svydesign(id ~SECU, strata ~strata, nest TRUE,weights ~wgt, data NSFG_data)生成结果
NSFG.svyglm.logistic - svyglm(LBW ~ ns(age, df 3), design NSFG.svydes,family quasibinomial())
cv.svyglm(glm_object NSFG.svyglm.logistic, nfolds 4)在这种情况下平均列显示二进制交叉熵损失的平均值。