Elemen akses stata matriks sebagai skalar atau makro

Saya membuat kolom angka acak di Stata, mencoba benih yang berbeda untuk melihat mana yang memberikan hasil terbaik. Saya membuat 250 angka acak dan menempelkannya ke dalam kode loop foreach yang terlihat di bawah. Elipsis mewakili ~240 biji.

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()
    . . . 
}

Saya ingin mengganti garis panjang 250 angka itu dengan membacanya dari Excel ke dalam matriks seperti ini dan kemudian mengulangi matriks tersebut satu per satu.

* 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

Ini akan berada di antara baris yang dimulai dengan "simpan . . ." dan garis depan. Apa yang saya tidak tahu bagaimana melakukannya adalah mengulangi matriks. Saya memerlukan garis yang menggantikan baris depan dengan baris yang diulang melalui matriks dan menempatkan nomor benih di makro "x".


person Snodgras    schedule 16.12.2015    source sumber


Jawaban (1)


Saya harap saya salah paham, tetapi gagasan yang mendasarinya tampak salah. Satu-satunya manfaat menggunakan benih tertentu adalah untuk memastikan reproduktifitas hasil yang terperinci, dalam arti bahwa orang lain yang menggunakan program dan data yang sama setidaknya yakin akan hasil yang sama (dan karenanya memiliki sarana untuk memeriksa dengan tepat apa yang Anda lakukan) . Sebaliknya jika hasilnya sangat bergantung pada benih tertentu, maka ukuran sampelnya akan terlalu kecil, atau masalahnya terlalu rapuh sehingga hasilnya tidak dapat dipercaya. Bagaimana Anda akan melaporkan hal ini? Jika Anda menyembunyikan fakta bahwa Anda harus mencari hasil yang sesuai, maka hal itu akan dianggap tidak dapat diterima. Jika Anda mempublikasikan faktanya, Anda mempublikasikan hasil yang dianggap meragukan dan tidak berguna. Saya menyarankan untuk mendiskusikan ide Anda dengan supervisor, mentor, atau kolega jika diperlukan. Jika mereka menyarankan hal ini, penjelasan mengapa menurut Anda ini adalah ide yang bagus akan diperlukan di mana pun Anda mempresentasikan hasilnya.

Secara keseluruhan, matriks Stata memiliki baris dan kolom sehingga jika diberi vektor kolom, elemen-elemennya secara umum adalah matname[i, 1]. Berlangganan didefinisikan dalam dokumentasi apa pun pada matriks Stata, mis. http://www.stata.com/help.cgi?matrix

Jadi lingkaran yang Anda maksudkan mungkin saja demikian

mkmat Seeds, matrix(matSeeds)

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

http://www.stata.com/help.cgi?macro mendokumentasikan evaluasi pada lalat (dalam hal ini) elemen skalar dan matriks.

EDIT: Sintaks yang digunakan di sini didokumentasikan di help macro atau di http://www.stata.com/manuals14/pmacro.pdf. Berikut ini contohnya:

. 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

Masalah mendasar di sini adalah set seed tidak akan mengevaluasi ekspresi yang dimasukkan ke dalamnya. Ada berbagai solusi termasuk mendefinisikan makro lokal dan kemudian mengetikkan referensi makro. Cara kerja Stata adalah makro dievaluasi sebelum set melihat argumennya. Sintaks yang ditunjukkan di sini memotong makro dengan melakukan evaluasi dengan cepat.

Kasus yang digunakan di sini adalah expansion_optr adalah tanda sama dengan = diikuti oleh exp, yaitu ekspresi yang akan dievaluasi. Dalam hal ini, ekspresi hanyalah elemen matriks.

person Nick Cox    schedule 16.12.2015
comment
Terima kasih telah menghakimi dan salah. stata.com/help.cgi?matrix tidak menampilkan kutipan kiri sebelum tanda sama dengan? Tampaknya sangat aneh. - person Snodgras; 18.12.2015
comment
Anda dapat menjelaskan mengapa menurut Anda komentar saya salah atau tidak relevan. Anda tidak boleh mendengarnya, tetapi mencoba benih yang berbeda untuk melihat mana yang memberikan hasil terbaik, tidak memenuhi syarat, merupakan kesalahpahaman kanonik tentang inti simulasi berdasarkan pembuatan bilangan acak. Kalau tidak, komentar saya tidak akan terbantahkan. - person Nick Cox; 18.12.2015
comment
Apa yang membingungkan Anda tentang sintaksisnya? Ini adalah sintaks untuk set dan tidak ada hubungannya dengan matrix itu sendiri. Apakah kamu sudah mencobanya? Apakah Anda mencoba sintaksis yang Anda tebak? Sekali lagi, sanggahan terhadap gagasan yang salah diperbolehkan. - person Nick Cox; 18.12.2015
comment
Terima kasih telah menghakimi dan salah. Saya mencoba memilih sampel yang paling mewakili populasi berdasarkan Chi-kuadrat dari beberapa variabel kategori. Anda bisa meminta maaf sekarang. Tak satu pun dari tautan Anda menunjukkan ekstraksi elemen matriks menjadi lokal atau skalar. Kutipan kiri sebelum tanda sama dengan? Saya yakin itu juga salah. - person Snodgras; 18.12.2015
comment
Saya akan membatasi diri pada komentar teknis. Anda salah. Saya akan mengedit jawabannya untuk menunjukkan alasannya. - person Nick Cox; 18.12.2015
comment
Bagi yang berminat, serangkaian makalah dimulai dengan William H. Kruskal dan Frederick Mosteller. 1979. Pengambilan sampel representatif, I: Sastra non-ilmiah. Tinjauan Statistik Internasional 47: 13–24 mengkaji gagasan yang sulit dipahami dan bermasalah secara rinci. - person Nick Cox; 18.12.2015
comment
Paragraf pertama saya adalah upaya dengan itikad baik untuk memperingatkan OP (dan pihak lain yang tertarik) bahwa seperti yang dijelaskan, gagasan statistik yang mendasarinya tampak meragukan. Saya mendukungnya sebagai komentar yang adil. Bisa dibilang, manfaat statistik dari sebuah ide tidak termasuk dalam topik di sini, namun sebagai orang yang ahli dalam bidang statistik, menurut saya, adalah tepat dan etis untuk menandai kasus-kasus yang mungkin bermasalah. OP jelas menganggap pendekatan ini dapat dipertahankan sepenuhnya. Aku masih sangat bingung, tapi aku tidak berkata apa-apa lagi. Seperti biasa, pembaca bisa dan harus menilai sendiri. - person Nick Cox; 18.12.2015
comment
Tidak ada pembenaran dalam literatur untuk proposal Anda, dan ini bukan pengambilan sampel acak sederhana. Ada desain yang diterima untuk membuat karakteristik sampel cocok dengan populasi. Beberapa di antaranya: pengambilan sampel bertingkat, pengambilan sampel sistematis, pengambilan sampel seimbang, pengambilan sampel kisi, pengambilan sampel dua tahap, dengan stratifikasi pada tahap kedua, pengambilan sampel dengan probabilitas sebanding dengan ukuran. Buku Yves Tillé Algoritme pengambilan sampel, Springer, 2006 mencakup pengambilan sampel seimbang, diimplementasikan dalam paket pengambilan sampel R miliknya. - person Steve Samuels; 02.01.2016
comment
Pengambilan sampel kisi dibahas dalam Raymond Jessen, 1978, Statistical Survey Techniques, Wiley. Penyesuaian pasca pengambilan sampel juga dapat diterapkan untuk mencapai kemiripan yang lebih dekat antara pengambilan sampel dan populasi dalam berbagai karakteristik. Raking dan kalibrasi adalah dua metode yang sudah dikenal luas. Lihat Sarndal, C.E. 2007. Pendekatan kalibrasi dalam teori dan praktik survei. Metodologi Survei 33, no. 2: 99-119. statcan.gc.ca/pub/ 12-001-x/2007002/article/10488-eng.pdf. - person Steve Samuels; 02.01.2016
comment
Beberapa klarifikasi: 1) penggarukan dapat membuat estimasi frekuensi sampel tepat cocok dengan frekuensi populasi untuk beberapa variabel - person Steve Samuels; 03.01.2016