Random 如何在SAS中扭曲(添加随机数)数据集

Random 如何在SAS中扭曲(添加随机数)数据集,random,sas,Random,Sas,首先,我是第一次登海报,所以请容忍我。我在这里和其他地方都在寻找答案,但还没有找到我想要的。我对SAS(和编程)相当陌生,因此很可能我搜索了错误的东西 无论如何。我从事研究工作,目前担任一份关于工作和健康的大型纵向问卷调查的数据管理员,这项研究为同一参与者收集了五次数据收集。我们希望促进数据的传播和数据集的使用,因此我们希望从当前数据创建一个教学数据集。教学数据集目前包括2000个随机选择的个体和463个变量——这只是量表的一个子集和主数据集中的一些背景信息 我的问题是,在我们开始传播数据集之前

首先,我是第一次登海报,所以请容忍我。我在这里和其他地方都在寻找答案,但还没有找到我想要的。我对SAS(和编程)相当陌生,因此很可能我搜索了错误的东西

无论如何。我从事研究工作,目前担任一份关于工作和健康的大型纵向问卷调查的数据管理员,这项研究为同一参与者收集了五次数据收集。我们希望促进数据的传播和数据集的使用,因此我们希望从当前数据创建一个教学数据集。教学数据集目前包括2000个随机选择的个体和463个变量——这只是量表的一个子集和主数据集中的一些背景信息

我的问题是,在我们开始传播数据集之前,必须满足的一个标准是,每个人都必须匿名,因此我们必须在数据集中包含随机错误。我已经将许多背景变量、收入、年龄、教育等进行了分组,但我希望每个变量至少包含一些随机误差。我不明白你为什么要这么做。大多数变量如下所示:

Health_1 Health_n
       1        2
       4        2
       5        5
       .        1
       1        1
大多数变量的值可以介于1和5之间(并且缺少)。我一直在考虑替换值(即,每1=2,每2=3等),但这会使最终结果变得很糟糕,因为许多分析结果都很奇怪。对于每个变量,我想随机更改,例如,将2000个观察值中的50个更改为变量可以假定的任何整数(1到5或缺失)


有什么建议吗?我想我可以把变量y的第n个观测值都改成x,但这不是随机的。我想更改所有变量,而不是为每个变量编写代码。

我不知道SAS,但我会建议一些通用的原则

  • 读取字段的数据
  • 采样一个随机变量(通常随机数函数返回一个介于0和1之间的数字)
  • 如果样本低于预先计算的数字,则进行数字移位,否则继续下一个数字
  • 移位时,再次对随机数进行采样,然后乘以6,然后向下取整。。。如果为6,则该字段应为空


    在本例中,预先计算的数值为2000/50..

    我将使用数据步骤,随机选取观察值进行更改

    data want;
    set have;
    /*Random uniform - change seed as you see fit*/
    _rand= ranuni(1); 
    
    /*Select approximately 50/2000 = 2.5% records*/
    if _rand > 50/2000 then do;
       /*Set variable to integer 0-5*/
       var1 = floor(6*ranuni(1));
       /*if set to 0, then set missing*/
       if var1 = 0 then 
          var1=.;
    
       /*Do this however many times you need*/
    end;
    /*do not put the _rand value into the output data*/
    drop _rand;
    run;
    

    对于SAS中的random,google提供了以下链接:感谢您的回答Henrik您指定的方法可能会导致某些行没有错误,从而允许对某些个人进行精确匹配。即使您保证每一行至少有一个诱发错误,如果同一个人有多行,模糊匹配也是可能的。为了安全起见,我建议将所有描述性变量名替换为泛型变量名。你随机分组的目的是什么?您是否仍希望保持变量的方差/协方差,还是为了提供一个测试数据集供研究人员在某个时候访问完整的数据集?您希望测试数据的结果与原始数据集的结果一致吗?谢谢您提出的问题,很抱歉我的回复太晚,我只是进行了一次短暂的旅行。user667489,这是一个好主意,也是我一直在考虑的事情-谢谢!Reeza,不,我想保持变量的方差。它只供学生练习使用。谢谢,我来试试这个!