จะสร้างลำดับด้วยค่าเฉลี่ยอย่างไร


11

ฉันรู้วิธีการสร้างลำดับที่มีค่าเฉลี่ย0ตัวอย่างเช่นใน Matlab ถ้าฉันต้องการสร้างลำดับของความยาวมันคือ:±10±110000

2*(rand(1, 10000, 1)<=.5)-1

อย่างไรก็ตามวิธีการสร้างลำดับมีค่าเฉลี่ยคือโดยที่เป็นที่ต้องการเล็กน้อย±10.051

คำตอบ:


18

ค่าเฉลี่ยที่คุณต้องการได้จากสมการ:

ยังไม่มีข้อความพี-ยังไม่มีข้อความ(1-พี)ยังไม่มีข้อความ=05

จากนั้นตามมาว่าความน่าจะเป็นที่1sควรจะเป็น.525

ใน Python:

x = np.random.choice([-1,1], size=int(1e6), replace = True, p = [.475, .525])

พิสูจน์:

x.mean()
0.050742000000000002

1'000 การทดสอบกับ 1'000'000 ตัวอย่างของ 1s และ -1s: ป้อนคำอธิบายรูปภาพที่นี่

เพื่อความสมบูรณ์ (ปลายหมวกถึง @Elvis):

import scipy.stats as st
x = 2*st.binom(1, .525).rvs(1000000) - 1
x.mean()
0.053859999999999998

1'000 การทดสอบกับ 1'000'000 ตัวอย่างของ 1s และ -1s:

ป้อนคำอธิบายรูปภาพที่นี่

และในที่สุดก็วาดจากชุดเครื่องแบบตามที่ @ ŁukaszDeryło (เช่นใน Python)

u = st.uniform(0,1).rvs(1000000)
x = 2*(u<.525) -1
x.mean()
0.049585999999999998

1'000 การทดสอบกับ 1'000'000 ตัวอย่างของ 1s และ -1s:

ป้อนคำอธิบายรูปภาพที่นี่

ทั้งสามมีลักษณะเหมือนกันอย่างแท้จริง!

แก้ไข

เส้นคู่บนทฤษฎีบทขีด จำกัด กลางและการแพร่กระจายของผลลัพธ์

ประการแรกการดึงค่าเฉลี่ยเป็นไปตามการแจกแจงปกติ

ประการที่สอง @Elvis ในความคิดเห็นของเขาต่อคำตอบนี้ได้ทำการคำนวณที่ดีเกี่ยวกับการแพร่กระจายที่แน่นอนของค่าเฉลี่ยที่ได้จากการทดลอง 1,000 ครั้ง (ประมาณ (0.048; 0.052)) ช่วงความเชื่อมั่น 95%

และนี่คือผลลัพธ์ของการจำลองเพื่อยืนยันผลลัพธ์ของเขา:

mn = []
for _ in range(1000):
    mn.append((2*st.binom(1, .525).rvs(1000000) - 1).mean())
np.percentile(mn, [2.5,97.5])
array([ 0.0480773,  0.0518703])

งานที่ดี. ประเด็นของฉันกับเบอร์นูลี่คือการลดคำถามให้มีการแจกแจงความน่าจะเป็นที่รู้จักกันดี จากมุมมอง 'การนำไปใช้' คำตอบของคุณและŁukasz 'นั้นสมบูรณ์แบบ
Elvis

ไม่มีการล้อเล่นคุณเป็นนักวิทยาศาสตร์มากที่สุดและดีที่สุด! ;) ฉันคิดเกี่ยวกับการแจกแจงแบบทวินามครึ่งวินาที แต่นั่นไม่เพียงพอที่จะเปลี่ยนเป็น -1 และ 1 ดังนั้นฉันจึงยืมโซลูชันของคุณ "ตามสภาพ" ขอบคุณ!
Sergey Bushmanov

1
ดังนั้นด้วยสัญลักษณ์ของฉันและค่าเบี่ยงเบนมาตรฐานของเป็น0.999 เมื่อคุณใช้ค่าเฉลี่ยในตัวอย่างค่าเบี่ยงเบนมาตรฐานคือและ 95% ของค่าเฉลี่ยที่คำนวณได้ควรอยู่ในช่วง , ที่อยู่0.052) ตรวจสอบคณิตศาสตร์! ;)var(Y)=4var(X)=4พี(1-พี)=0.9975Y0.9991060.999×10-30.05±1.96×0.999×10-3(0.048;0.052)
Elvis

12

ตัวแปรที่มีค่าและจะอยู่ในรูปกับ Bernoulli กับพารามิเตอร์พีค่าที่คาดหวังคือดังนั้นคุณรู้วิธีรับ (ที่นี่ )1 Y = 2 X - 1 X p E ( Y ) = 2 E ( X ) - 1 = 2 p - 1 p p = 0.525-11Y=2X-1XพีE(Y)=2E(X)-1=2พี-1พีพี=0.525

ใน R คุณสามารถสร้างตัวแปร Bernoulli ด้วยrbinom(n, size = 1, prob = p)เช่นยกตัวอย่างเช่น

x <- rbinom(100, 1, 0.525)
y <- 2*x-1

5

ยังไม่มีข้อความ[0,1]

จากนั้นมูลค่าที่คาดหวังของคุณคือ

10.525+(-1)(1-0.525)=0.525-0.475=0.05

ฉันไม่ใช่ผู้ใช้ Matlab แต่ฉันคิดว่ามันจะเป็นไปไม่ได้

2*(rand(1, 10000, 1)<=.525)-1

3
นั่นเป็นวิธีที่ถูกต้องในการใช้การสุ่มตัวอย่างการแปลงผกผันในที่นี่
ทิม

4

คุณต้องสร้างมากกว่า 1 วินาทีมากกว่า -1 วินาที แม่นยำมากขึ้น 5% 1 วินาทีเพราะคุณต้องการให้ค่าเฉลี่ยของคุณเป็น 0.05 ดังนั้นคุณเพิ่มความน่าจะเป็นที่ 1 ได้ 2.5% และลดลง -1s 2.5% ในรหัสของคุณก็เทียบเท่ากับการเปลี่ยน0.5ไป0.525คือจาก 50% ถึง 52.5%


2

ในกรณีที่คุณต้องการค่า EXACT 0.05 หมายความว่าคุณสามารถทำเทียบเท่ากับรหัส R ต่อไปนี้ใน MATLAB:

sample(c(rep(-1, 95*50), rep(1, 105*50)))

-1 คำตอบนี้ผิด! สิ่งเดียวที่รหัสนี้ทำคือมันจะทำการสุ่มค่าคงที่ของเวกเตอร์ ผลลัพธ์ไม่ได้สุ่ม!
ทิม

2
@Tim ทำไมมันไม่ทำงาน มันจะส่งกลับรายการของ -1 และ 1 ในลำดับแบบสุ่มด้วยการนับที่ออกแบบมาเพื่อให้แน่ใจว่าค่าเฉลี่ยที่แน่นอนคือ 0.05
ddunn801

1
@Tim วิธีนี้เป็นแบบสุ่ม คุณลองใช้มันซ้ำแล้วซ้ำอีก?
whuber

@whuber นี้เป็นเช่นเดียวกับวิธีการแก้ปัญหาที่แนะนำโดย Amos Coats ความแตกต่างเพียงอย่างเดียวคือการอนุญาตให้มีค่า คุณสมบัติทางสถิติของตัวอย่างดังกล่าวจะถูกกำหนดและคงที่
ทิม

3
@Tim ฉันคิดว่าคุณอาจกำลังอ่านข้อสันนิษฐานที่ไม่มีเหตุผลสำหรับคำถามนี้ที่ไม่ได้ทำขึ้นมาอย่างชัดเจน แม้ว่าความถี่ - และดังนั้นทุกช่วงเวลา - ของตัวอย่างที่ไม่มีการเรียงลำดับจะคงที่ แต่ความหลากหลายของ "คุณสมบัติทางสถิติ" ของซีรีย์ที่สร้างขึ้นจะแตกต่างกันแบบสุ่ม เนื่องจากตัวอย่างในคำถามสร้างอาร์เรย์และอาร์เรย์ไม่ได้ถูกกำหนด - ลำดับมีความสำคัญในอาร์เรย์ - ฉันคิดว่าการตีความนี้เป็นสิ่งที่ยุติธรรม (และมันทำให้คำถามสว่างขึ้น) ในทางกลับกัน "โซลูชัน" ที่โพสต์โดย Coats เป็นเรื่องตลกที่ดี - แต่ SE ไม่ชอบล้อเล่น
whuber
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.