Excel formula Excel-如何将数据拆分为均匀分布的训练集和测试集

Excel formula Excel-如何将数据拆分为均匀分布的训练集和测试集,excel-formula,sas,statistics,excel-2010,Excel Formula,Sas,Statistics,Excel 2010,我有一个数据集(Excel),我将导入SAS进行一些建模 我有一种随机拆分excel数据集的方法(使用=RAND()函数),但是(在拆分阶段)有没有办法确保样本的分布是均匀的(除了保持随机拆分和测试分布,直到它变得可接受) 否则,如果这在SAS中执行得最好,那么测试样本随机性的最有效方法是什么 数据集包含35个变量,混合了二进制、连续和分类变量。这个答案与Excel无关,而是与采样策略有关 首先,我们必须构造一个标准,使样本的度量值与完整的数据集“足够接近” 假设我们对平均值和标准偏差感兴趣,并

我有一个数据集(Excel),我将导入SAS进行一些建模

我有一种随机拆分excel数据集的方法(使用
=RAND()
函数),但是(在拆分阶段)有没有办法确保样本的分布是均匀的(除了保持随机拆分和测试分布,直到它变得可接受)

否则,如果这在SAS中执行得最好,那么测试样本随机性的最有效方法是什么


数据集包含35个变量,混合了二进制、连续和分类变量。

这个答案与Excel无关,而是与采样策略有关

首先,我们必须构造一个标准,使样本的度量值与完整的数据集“足够接近”

假设我们对平均值和标准偏差感兴趣,并且整个总体是一组10000个值,列a

  • 我们计算完整数据集的平均值和标准差
  • 为每项措施制定一个“足够接近”的标准
  • 比如说,挑选500个样本
  • 计算样本的度量值
  • 如果措施“足够接近”,我们就完成了,否则再选择500个

  • 我们需要小心,标准不要太严格;否则我们可能会永远循环。

    这个答案与Excel无关,而是与采样策略有关

    首先,我们必须构造一个标准,使样本的度量值与完整的数据集“足够接近”

    假设我们对平均值和标准偏差感兴趣,并且整个总体是一组10000个值,列a

  • 我们计算完整数据集的平均值和标准差
  • 为每项措施制定一个“足够接近”的标准
  • 比如说,挑选500个样本
  • 计算样本的度量值
  • 如果措施“足够接近”,我们就完成了,否则再选择500个

  • 我们需要小心,标准不要太严格;否则我们可能会永远循环。

    在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
    ,然后带着具体问题回到这里,如果遇到问题,非常感谢,非常感谢您的详细解释,我将尝试两种方法,看看这两种方法的效果如何