我有一个数据集(在Excel中),我将导入SAS进行一些建模。
我有一个随机分割我的excel数据集的方法(使用=RAND()
函数),但是有一种方法(在分裂阶段)确保样本的分布是均匀的(除了随机拆分并测试分布直到可以接受为止)?
否则,如果最好在SAS中执行此操作,那么测试样本随机性的最有效方法是什么?
数据集包含35个变量,包含二元,连续和分类变量。
答案 0 :(得分:2)
在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;
如果有一个特定的变量[s]你想确保训练和测试集平衡,你可以使用strata
或control
,具体取决于你究竟是什么类型的&# 39;重新谈论。 control
只是通过控制变量对事物进行近似尝试(它按控制变量进行排序,然后拉动每个3或其他任何东西,这样你得到一种近似平衡;如果你有2个以上的控制变量它蛇排序,Asc。然后在内部描述。但这会减少随机性。)
如果您使用strata
,它会保证您在分层内的采样率 - 所以如果您这样做了:
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%)。
你做的事情取决于你关心它的平衡。你做的事情越多,与所有 else 的关系越不平衡,所以要小心;可能是一个简单的随机样本是最好的,特别是如果你有足够好的N.
如果你没有足够的N,那么你可以使用自举技术,这意味着你可以从70%的样本中取出一个替换样本,并且可能需要100个样本,每个样本的N都比原始样本高。然后,您对所选的每个样本进行测试或其他任何操作,这些结果的变化会告诉您即使您的N在一次通过中不足以做到这一点,您也会如何做。
答案 1 :(得分:1)
这个答案与Excel无关,但与采样策略无关。
首先,我们必须构建一个标准,使样本的度量与整个数据集“足够接近”。
假设我们对平均值和标准偏差感兴趣,并且完整填充是 A
列中10,000个值的集合我们需要注意标准不要太紧;否则我们可能永远循环。