Excel formula Excel-如何将数据拆分为均匀分布的训练集和测试集
我有一个数据集(Excel),我将导入SAS进行一些建模 我有一种随机拆分excel数据集的方法(使用Excel formula Excel-如何将数据拆分为均匀分布的训练集和测试集,excel-formula,sas,statistics,excel-2010,Excel Formula,Sas,Statistics,Excel 2010,我有一个数据集(Excel),我将导入SAS进行一些建模 我有一种随机拆分excel数据集的方法(使用=RAND()函数),但是(在拆分阶段)有没有办法确保样本的分布是均匀的(除了保持随机拆分和测试分布,直到它变得可接受) 否则,如果这在SAS中执行得最好,那么测试样本随机性的最有效方法是什么 数据集包含35个变量,混合了二进制、连续和分类变量。这个答案与Excel无关,而是与采样策略有关 首先,我们必须构造一个标准,使样本的度量值与完整的数据集“足够接近” 假设我们对平均值和标准偏差感兴趣,并
=RAND()
函数),但是(在拆分阶段)有没有办法确保样本的分布是均匀的(除了保持随机拆分和测试分布,直到它变得可接受)
否则,如果这在SAS中执行得最好,那么测试样本随机性的最有效方法是什么
数据集包含35个变量,混合了二进制、连续和分类变量。这个答案与Excel无关,而是与采样策略有关 首先,我们必须构造一个标准,使样本的度量值与完整的数据集“足够接近” 假设我们对平均值和标准偏差感兴趣,并且整个总体是一组10000个值,列a
我们需要小心,标准不要太严格;否则我们可能会永远循环。这个答案与Excel无关,而是与采样策略有关 首先,我们必须构造一个标准,使样本的度量值与完整的数据集“足够接近” 假设我们对平均值和标准偏差感兴趣,并且整个总体是一组10000个值,列a
我们需要小心,标准不要太严格;否则我们可能会永远循环。在SAS中,您可以使用
proc surveyselect
来执行此操作
proc surveyselect data=sashelp.cars out=cars_out outall samprate=0.7;
run;
data train test;
set cars_out;
if selected then output test;
else output train;
run;
如果有一个特定变量需要确保列车和测试集的平衡,则可以使用strata
或control
,具体取决于您所谈论的内容<代码>控制将简单地尝试通过控制变量对事物进行近似均衡(它通过控制变量进行排序,然后每三次或任何时候拉动一次,因此您得到一种近似平衡;如果您有2个以上的控制变量,它会在内部进行snake排序,Asc。然后Desc。等等,但这会减少随机性)
如果您使用地层
,它可以保证地层内的采样率-因此,如果您使用:
proc sort data=sashelp.cars out=cars;
by origin;
run;
proc surveyselect data=cars out=cars_out outall samprate=0.7;
strata origin;
run;
(最后的分割数据步骤是相同的)然后你会得到每个单独原点的70%(当然,最终会达到总数的70%)
你做什么取决于你所关心的是什么。你做的事情越多,它就越不平衡,所以要小心;可能一个简单的随机样本是最好的,特别是如果你有足够好的N
如果你没有足够的N,那么你可以使用自举技术,这意味着你从70%的样本中抽取一个替换样本,然后抽取其中的100个样本,每个样本的N都比你原来的高。然后对每个选定的样本进行测试或其他任何操作,这些结果中的变化会告诉您如何进行测试,即使您的N不足以一次完成测试。在SAS中,您只需使用
proc surveyselect
即可
proc surveyselect data=sashelp.cars out=cars_out outall samprate=0.7;
run;
data train test;
set cars_out;
if selected then output test;
else output train;
run;
如果有一个特定变量需要确保列车和测试集的平衡,则可以使用strata
或control
,具体取决于您所谈论的内容<代码>控制将简单地尝试通过控制变量对事物进行近似均衡(它通过控制变量进行排序,然后每三次或任何时候拉动一次,因此您得到一种近似平衡;如果您有2个以上的控制变量,它会在内部进行snake排序,Asc。然后Desc。等等,但这会减少随机性)
如果您使用地层
,它可以保证地层内的采样率-因此,如果您使用:
proc sort data=sashelp.cars out=cars;
by origin;
run;
proc surveyselect data=cars out=cars_out outall samprate=0.7;
strata origin;
run;
(最后的分割数据步骤是相同的)然后你会得到每个单独原点的70%(当然,最终会达到总数的70%)
你做什么取决于你所关心的是什么。你做的事情越多,它就越不平衡,所以要小心;可能一个简单的随机样本是最好的,特别是如果你有足够好的N
如果你没有足够的N,那么你可以使用自举技术,这意味着你从70%的样本中抽取一个替换样本,然后抽取其中的100个样本,每个样本的N都比你原来的高。然后你对每个选定的样本进行测试或其他任何测试,这些结果的变化会告诉你你是如何做的,即使你的N不足以一次通过。请提供更多信息?数据?例子?在29个问题中,您已经在这里呆了足够长的时间,知道我们需要您的努力,然后我们会建议您阅读
proc surveyselect
,然后带着具体问题回到这里,如果您想了解更多问题信息,请?数据?例子?在29个问题中,您已经在这里呆了足够长的时间,知道我们需要您多做一点努力,然后我们会建议您阅读proc surveyselect
,然后带着具体问题回到这里,如果遇到问题,非常感谢,非常感谢您的详细解释,我将尝试两种方法,看看这两种方法的效果如何