Случайно выбирая числа из переменных по строкам - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть следующие переменные:

clear
input lottery1 lottery2 lottery3 lottery4 lottery5
12 14 15 12 11
13  8 14  3  1
18 17 19 19  2
19  2  2  5  8
 7 12 10 19  8
 1 12 19  6 13
16  1  8  6  2
 7  5 11  7 15
 1  5  1  9 15
 1  8  6  3 14
14 15 15  3 14
20  9  4  4  9
14  4 14  7 13
 9  3 12 14 11
 1  1 15  3 13
 4 18  8 19  1
12  8  5  9 17
 1 20 15 10 19
14 19 16 10  2
20  5 14  7  9
 1  2 20 19 20
16 12 18 18  6
14  7  2 17  8
 5 14 13 16  9
14 17 17 11 16
 4 15 12  4 20
 4 19 11 17 19
14 13 12  9  8
 6 15  7 13  3
 4  2 11  7 11
 8  1  3 14 17
12 14  3 10  6
17  3  2  7 20
12 20 14  5 13
 3 12  5 19 18
16  4 20  7 17
11 18 18  2  3
16 17 17  6  6
 3 16 12 14  4
14  6  9 11 11
 7 12 17 15 15
 7 12  7  7 12
 7  4 13 10  9
16 10 15 10 15
14  8  7  3  3
 6 18  4 17 16
15 16 10  5 11
13 14 19 14 10
 5  4 20 13  1
15  4  3 17  6
end

Как можно случайным образом выбрать число из каждого наблюдения и сохранить его в новой переменной lot?

Метод 1 вответ, предоставленный в моем предыдущем вопросе , не работает, поскольку у меня теперь есть переменные вместо макроса.

Ответы [ 2 ]

1 голос
/ 19 сентября 2019

Как и в вашей предыдущей теме, случайность не означает с равными вероятностями , если вы не прописали это.И наоборот, можно догадаться, что вы имеете в виду.

Неудивительно, что предыдущий ответ на другой вопрос здесь не применим.

Но предложения в более ранней ветке легко адаптируются.

generate rnd = runiform()
generate wanted = cond(rnd <= 0.2, lottery1, cond(rnd <= 0.4, lottery2, ///
                  cond(rnd <= 0.6, lottery3, cond(rnd <= 0.8, lottery4, lottery5))))
1 голос
/ 19 сентября 2019

Для меня работает следующее:

generate lot = .

egen lotteries = concat(lott*), punct(" ")
replace lot = real(word(lotteries, runiformint(1,`=wordcount(lotteries)')))

Идея здесь в том, что вместо использования цикла вы можете объединить в строку значения во всех lottery переменных, а затем выбрать одну случайным образом, используяфункция word().Обратите внимание на пробел между числами в результирующей строковой переменной lotteries.

...