我有一个N = 5000的数据集,至少有一个重要变量缺少大约1/2。主要的分析方法将是Cox比例风险。
我计划使用多重插补。我还将分为火车和测试仪。
我应该拆分数据然后分别估算,还是估算然后拆分?
如果它的事项,我将使用PROC MI
在SAS
。
我有一个N = 5000的数据集,至少有一个重要变量缺少大约1/2。主要的分析方法将是Cox比例风险。
我计划使用多重插补。我还将分为火车和测试仪。
我应该拆分数据然后分别估算,还是估算然后拆分?
如果它的事项,我将使用PROC MI
在SAS
。
Answers:
您应该在进行预处理或插补之前拆分。
训练和测试集之间的划分是一种尝试,以复制您拥有过去信息的情况,并正在构建一个模型,以对将来仍未知的信息进行测试:训练集取代了过去,测试集取代了未来的地方,所以您只需要测试您训练过的模型一次。
牢记过去/未来的类比,这意味着您要对数据进行预处理或处理,例如估算缺失值,您应该单独对训练集进行处理。然后,如果您的测试集还需要进行预处理或插补,您就可以记住对训练集所做的操作,以便您在两个集合上都以相同的方式进行操作。
从注释中添加:如果您使用测试数据来影响训练数据,那么该测试数据将用于构建您的模型,因此它不再是测试数据,并且不会提供对模型的公平测试。您可能会过度拟合,而为了避免这种情况,您首先就要分离出测试数据
补充说明一下,我还希望在插补或任何类型的预处理之前进行拆分。测试数据不会告诉您您对培训数据所做的任何事情(比喻说,未来不应影响过去)。然后,如果您的测试集也需要预处理或估算,那么您就可以记住对训练集所做的操作,以便您在两个集合上都以相同的方式进行操作(类比是您可以使用过去来帮助预测未来) 。
如果您使用测试数据以任何方式影响训练数据,那么该测试数据将用于构建您的模型,因此它将不再是测试数据,也不会为您的模型提供公平的测试。您冒着过度安装的风险,而为了避免这种情况,您首先就要分离出测试数据!
我认为r中的插入符号包在这种情况下非常有用。我发现该帖子特别有用https://topepo.github.io/caret/model-training-and-tuning.html