Статический элемент доступа к матрице как скаляр или макрос

Я создаю столбец случайных чисел в Stata, пробуя разные начальные значения, чтобы увидеть, какое из них дает наилучшие результаты. Я создал 250 случайных чисел и вставил их в код цикла foreach, показанный ниже. Многоточие представляет ~240 семян.

save "`datadir'ProviderCounty", replace

foreach x in 89583 31214 65326 61107 54662 91414 86171 14809 19625 . . . 74397 85273 {

    use "`datadir'ProviderCounty", replace
    display `x'
    set seed `x'
    generate rannum = uniform()
    . . . 
}

Я хотел бы заменить эту длинную строку из 250 чисел, прочитав их из Excel в матрицу, подобную этой, а затем последовательно перебирая матрицу.

* Import seeds randomly generated in Excel
clear
import excel "`datadirIN'Random Number Seeds.xlsx", sheet("Sheet1") cellrange(A2:A252) firstrow
mkmat Seeds, matrix(matSeeds)
scalar mlen = rowsof(matSeeds)
clear

Это должно быть между строкой, начинающейся с «сохранить…». и строка foreach. Чего я не знаю, как сделать, так это перебрать матрицу. Мне нужна строка, которая заменяет строку foreach строкой (строками), которые перебирают матрицу и помещают начальное число в макрос «x».


person Snodgras    schedule 16.12.2015    source источник


Ответы (1)


Надеюсь, я ошибаюсь, но основная идея кажется ошибочной. Единственным преимуществом использования указанного начального числа является обеспечение воспроизводимости подробных результатов в том смысле, что другие люди, использующие ту же программу и те же данные, по крайней мере, уверены в тех же результатах (и, следовательно, имеют средства проверки именно того, что вы сделали) . В противном случае, если результаты сильно зависят от конкретного начального числа, то либо размер выборки слишком мал, либо проблема слишком незначительна, чтобы какие-либо результаты были заслуживающими доверия. Как вы собираетесь сообщить об этом? Если вы скроете тот факт, что вам приходилось искать подходящие результаты, то это было бы расценено как неприемлемое. Если вы предаете гласности этот факт, вы публикуете результаты, которые помечены как сомнительные и бесполезные. Я бы посоветовал обсудить вашу идею с руководителями, наставниками или коллегами по мере необходимости. Если они предлагают это, объяснение, почему вы считаете это хорошей идеей, будет необходимо всякий раз, когда вы представляете результаты.

Все это говорит о том, что в матрицах Stata есть строки и столбцы, поэтому для заданного вектора-столбца его элементами обычно являются matname[i, 1]. Подписка определяется в любой документации по матрицам Stata, например. http://www.stata.com/help.cgi?matrix

Таким образом, петля, которую вы, кажется, подразумеваете, может быть

mkmat Seeds, matrix(matSeeds)

forval i = 1/`= rowsof(matSeeds)' {
    ...
    set seed `= matSeeds[`i', 1]'  
    ... 
}

http://www.stata.com/help.cgi?macro документирует оценки на полет (в данном случае) скаляров и матричных элементов.

РЕДАКТИРОВАТЬ: Используемый здесь синтаксис задокументирован по адресу help macro или по адресу http://www.stata.com/manuals14/pmacro.pdf. Вот пример:

. mat foo  = J(1, 1, 42)

. set seed `=foo[1,1]'

. display c(seed)
X51535c3ec43f462544a474abacbdd93d386b

. mat foo  = J(1, 1, 666)

. set seed `=foo[1,1]'

. display c(seed)
X97b5c5aec43f462544a474abacbdd93d2d9c

Основная проблема здесь заключается в том, что set seed сама не будет оценивать переданные ему выражения. Существуют различные обходные пути, включая определение локального макроса и последующий ввод ссылки на макрос. Работа Stata заключается в том, что макрос оценивается до того, как set увидит свои аргументы. Показанный здесь синтаксис вырезает макрос путем оценки на лету.

Здесь используется случай, когда expansion_optr представляет собой знак равенства =, за которым следует exp, то есть выражение, которое нужно вычислить. В этом случае выражение является просто матричным элементом.

person Nick Cox    schedule 16.12.2015
comment
Спасибо за субъективность и неправоту. На stata.com/help.cgi?matrix не отображается левая кавычка перед знак равенства? Кажется очень странным. - person Snodgras; 18.12.2015
comment
Вы могли бы объяснить, почему вы считаете мои комментарии неправильными или неуместными. Вам неприятно это слышать, но пробовать разные начальные числа, чтобы увидеть, какое из них дает наилучшие результаты, — это безоговорочно каноническое непонимание сути симуляции, основанной на генерации случайных чисел. В остальном мои комментарии не опровергнуты. - person Nick Cox; 18.12.2015
comment
Что вас смущает в синтаксисе? Это синтаксис для set и не имеет ничего общего с самим matrix. Вы пробовали? Вы пробовали вместо этого синтаксис, о котором вы догадываетесь? Опять же приветствуется опровержение неверных идей. - person Nick Cox; 18.12.2015
comment
Спасибо за субъективность и неправоту. Я пытаюсь выбрать выборку, наиболее репрезентативную для населения, на основе хи-квадрата нескольких категориальных переменных. Вы можете извиниться прямо сейчас. Ни одна из ваших ссылок не показывает извлечение матричного элемента в локальный или скалярный. Левая кавычка перед знаком равенства? Бьюсь об заклад, это тоже неправильно. - person Snodgras; 18.12.2015
comment
Ограничусь техническими замечаниями. Вы не правы. Я отредактирую ответ, чтобы показать, почему. - person Nick Cox; 18.12.2015
comment
Для тех, кто заинтересован, серия статей, начиная с Уильяма Х. Крускала и Фредерика Мостеллера. 1979. Репрезентативная выборка, I: Ненаучная литература. International Statistical Review 47: 13–24 подробно исследует неуловимую и проблематичную идею. - person Nick Cox; 18.12.2015
comment
Мой первый абзац был и остается добросовестной попыткой предупредить ОП (и всех заинтересованных), что, как объяснено, основная статистическая идея кажется сомнительной. Я поддерживаю это как справедливое замечание. Возможно, статистические достоинства идеи здесь не по теме, но как специалист по статистике я тоже считаю уместным и этичным отмечать возможные проблемные случаи. ОП, очевидно, считает этот подход полностью оправданным. Я по-прежнему очень озадачен, но больше ничего не говорю. Как обычно, читатели могут и должны судить сами. - person Nick Cox; 18.12.2015
comment
В литературе нет обоснования вашего предложения, которое не является простой случайной выборкой. Существуют общепринятые планы, чтобы характеристики выборки хорошо соответствовали генеральной совокупности. Вот некоторые из них: стратифицированная выборка, систематическая выборка, сбалансированная выборка, решетчатая выборка, двухступенчатая выборка со стратификацией на втором этапе, выборка с вероятностью, пропорциональной размеру. В книге Ива Тилле « Алгоритмы выборки» , Springer, 2006 г. рассматривается сбалансированная выборка, реализованная в его пакете выборки R. - person Steve Samuels; 02.01.2016
comment
Решетчатая выборка описана в Raymond Jessen, 1978, Statistical Survey Techniques, Wiley. Корректировки после выборки также могут применяться для достижения большего сходства выборки и генеральной совокупности по нескольким характеристикам. Сгребание и калибровка — два хорошо зарекомендовавших себя метода. См. Sarndal, C.E. 2007. Подход к калибровке в теории и практике съемки. Методология обследования 33, вып. 2: 99-119. statcan.gc.ca/pub/ 12-001-x/2007002/article/10488-eng.pdf. - person Steve Samuels; 02.01.2016
comment
Некоторое пояснение: 1) ранжирование может привести к тому, что оценочные частоты выборки точно совпадут с частотами генеральной совокупности для нескольких переменных. - person Steve Samuels; 03.01.2016