在Mata的for循环中嵌套if条件

时间:2016-06-23 14:54:28

标签: stata

我目前正在与Mata合作。我有以下数据集(可以通过复制以下命令在Stata中输入:

* Example generated by -dataex-. To install: ssc install dataex
clear
input float(A B)
.2  .5
 0  .6
.3 .21
.5  .4
.6  .5
.1  .1
.2  .5
end

Mata中的数据集目前包含尺寸为7 * 1的向量A和B.总之,我想要做的是

  1. 创建另一个从正态分布中提取的相同维度的随机项向量
  2. 将该向量与向量A和B
  3. 相加
  4. 评估总和是否大于1
  5. 如果3)对于特定元素为真,则重绘随机项直到条件成立
  6. 对所有项执行此操作,直到此向量的每个元素(A,B和误差项的总和)小于1或大于0。 以下是我到目前为止编写的代码:
  7. 列出项目

    putmata A B \\this inputs these vectors in mata
    
    
    mata
    Sum=J(7, 1,0)   \\\Creates a vector with each element 0- to loop over.
    Random=J(7,1,0)
    
    
    
    for (i=1;i<7;i++) {  
           Random[i,1] = rnormal(1,1,0,1))
           Sum[i,1]=A[i,1]+B[i,1]+Random[i,1] 
           while (Sum[i,1]>0) Random[i,1]=rnormal(1,1,0,1)
     }
    
    }
    end
    

    这不起作用,我仍然得到超过1且小于0的总和。非常感谢任何帮助!

0 个答案:

没有答案