องค์ประกอบการเข้าถึงสถานะของเมทริกซ์เป็นสเกลาร์หรือมาโคร

ฉันกำลังสร้างคอลัมน์ตัวเลขสุ่มใน Stata ลองใช้เมล็ดต่างๆ เพื่อดูว่าอันไหนให้ผลลัพธ์ดีที่สุด ฉันสร้างตัวเลขสุ่ม 250 ตัวแล้ววางลงในโค้ดของ foreach loop ดังที่เห็นด้านล่าง จุดไข่ปลาหมายถึงประมาณ 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

ซึ่งจะอยู่ระหว่างบรรทัดที่ขึ้นต้นด้วย "save . . . " และเส้นหน้า สิ่งที่ฉันไม่รู้ว่าต้องทำอย่างไรคือวนซ้ำเมทริกซ์ ฉันต้องการบรรทัดที่แทนที่บรรทัด 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
สำหรับผู้ที่สนใจ มีบทความชุดหนึ่งที่ขึ้นต้นด้วย William H. Kruskal และ Frederick Mosteller 2522. การสุ่มตัวอย่างโดยตัวแทน I: วรรณกรรมที่ไม่ใช่วิทยาศาสตร์ การทบทวนสถิติระหว่างประเทศ 47: 13–24 ตรวจสอบแนวคิดที่เข้าใจยากและเป็นปัญหาโดยละเอียด - person Nick Cox; 18.12.2015
comment
ย่อหน้าแรกของฉันคือและเป็นความพยายามโดยสุจริตในการเตือน OP (และคนอื่น ๆ ที่สนใจ) ว่าตามที่อธิบายไว้ แนวคิดทางสถิติที่ซ่อนอยู่นั้นดูน่าสงสัย ฉันยืนตามมันเป็นความคิดเห็นที่ยุติธรรม อาจเป็นไปได้ว่าข้อดีทางสถิติของแนวคิดนั้นอยู่นอกประเด็นที่นี่ แต่ในฐานะบุคคลทางสถิติเช่นกัน ฉันคิดว่าเป็นการเหมาะสมและมีจริยธรรมที่จะทำเครื่องหมายกรณีที่อาจเป็นปัญหา OP เห็นได้ชัดว่าแนวทางนี้สามารถป้องกันได้อย่างละเอียด ฉันยังคงงงมาก แต่ฉันไม่พูดอะไรอีกแล้ว ตามปกติแล้วผู้อ่านสามารถและควรตัดสินด้วยตนเอง - person Nick Cox; 18.12.2015
comment
ข้อเสนอของคุณไม่มีเหตุผลในเอกสาร ซึ่งไม่ใช่การสุ่มตัวอย่างแบบง่ายๆ มีการออกแบบที่เป็นที่ยอมรับเพื่อให้ลักษณะตัวอย่างตรงกับประชากรเป็นอย่างดี บางส่วน ได้แก่ การสุ่มตัวอย่างแบบแบ่งชั้น การสุ่มตัวอย่างอย่างเป็นระบบ การสุ่มตัวอย่างที่สมดุล การสุ่มตัวอย่างแบบขัดแตะ การสุ่มตัวอย่างแบบสองขั้นตอน โดยมีการแบ่งชั้นในขั้นที่สอง การสุ่มตัวอย่างด้วยความน่าจะเป็นตามสัดส่วนกับขนาด หนังสือ Sampling Algorithm ของ Yves Tillé ชื่อ 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