บังคับให้ชุดตัวเลขเป็นเส้นโค้งเบล - เกาส์


9

( สิ่งนี้เกี่ยวข้องกับคำถามการเขียนโปรแกรมของฉันเกี่ยวกับ Stack Overflow : อัลกอริทึม Bell Curve Gaussian (Python และ / หรือ C #) )

บน Answers.com ฉันพบตัวอย่างง่ายๆนี้:

  1. ค้นหาค่าเฉลี่ยเลขคณิต (ค่าเฉลี่ย) => ผลรวมของค่าทั้งหมดในชุดหารด้วยจำนวนองค์ประกอบในชุด
  2. ค้นหาผลรวมของกำลังสองของค่าทั้งหมดในชุด
  3. หารเอาท์พุทของ (2) กับจำนวนขององค์ประกอบในชุด
  4. ลบกำลังสองของค่าเฉลี่ย (1) จากผลลัพธ์ของ (3)
  5. นำสแควร์รูทของผลลัพธ์ของ (4)

ตัวอย่าง: Set A = {1,3,4,5,7}

  1. (1 + 3 + 4 + 5 + 7) / 5 = 4
  2. (1 * 1 + 3 * 3 + 4 * 4 + 5 * 5 + 7 * 7) = 1 + 9 + 16 + 25 + 49 = 100
  3. 100/5 = 20
  4. 20 - 4 * 4 = 20-16 = 4
  5. SQRT (4) = 2

(นี่มาจากโพสต์บนwiki.answers.com )

ตอนนี้ให้ทั้งหมดที่ฉันจะพอดีกับข้อมูลข้างต้นกับเส้นโค้งระฆัง (เช่นคะแนนเครดิต) ตั้งแต่ 200 ถึง 800 เห็นได้ชัดว่าจำนวน 5 ในชุดข้างต้นจะเป็น 500 แต่แล้วสูตรสำหรับการพิจารณาคืออะไร 3 ควรอยู่ในระดับเดียวกัน แม้ว่าเซต A = {1,3,4,5,7} เดิมไม่ใช่เส้นโค้งระฆัง แต่ฉันต้องการบังคับให้เป็นเส้นโค้งระฆัง

ลองนึกภาพเหล่านี้คือคะแนนจาก 5 คน เดือนหน้าคะแนนอาจเปลี่ยนแปลงดังนี้: เซตA2={1,2,4,5,9}(ผู้ชายคนหนึ่งเสียคะแนนและคนที่แต่งตัวประหลาดอันดับหนึ่งได้รับคะแนนเพิ่มอีกสองคะแนน - คนรวยยิ่งขึ้นและคนจนยากจนกว่า) แล้วบางทีอาจจะเป็นคนใหม่ที่เข้ามาในชุด: A3={1,2,4,5,8,9}ชุด


2
หากชุดของคุณเปลี่ยนเวลาเป็นไปไม่ได้ที่จะปรับให้เข้ากับเส้นโค้งระฆังเดียวกัน สมมติว่าคุณมีชุดA={1,2,3,4}ดังนั้น 4 ควรเป็น 800 แต่ถ้ามีการสังเกตใหม่ 5 ครั้งมันก็ควรกลายเป็น 800
mpiktas

1
ยินดีต้อนรับสู่ CrossValidated, NealWalters คุณอาจพบว่าคำตอบทั่วไปในการถามนักสถิติ "ฉันจะทำอย่างไร" คือ "ทำไมคุณถึงต้องการทำเช่นนั้น"
onestop

@onestop - ดูลิงก์ของฉันไปยังโพสต์ก่อนหน้า ในโรงเรียนฉันจำได้ว่าเคยได้ยินอาจารย์ที่ให้คะแนน "ทางโค้ง" ดังนั้นไม่ว่าคุณจะได้คะแนนเท่าใดในการทดสอบมีเพียงไม่กี่คนเท่านั้นที่จะได้รับคะแนนแต่ละระดับ ฉันไม่รู้ว่าคะแนนเครดิตทำงานอย่างไร แต่มันคล้ายกันมากกับสิ่งที่ฉันจำลอง ฉันให้คะแนนผู้คนเช่นเมื่อพวกเขาชำระเงินกู้ แต่บางคนจะชำระเงินกู้จำนวนมาก ฉันต้องการรวมคะแนนป่าของฉันเป็นชุดของคะแนนปกติ
NealWalters

อ่านความคิดเห็นสุดท้ายของคุณฉันสงสัยว่าวิธีใดดีที่สุด: ให้เช่น 1 คะแนนสำหรับแต่ละเงินกู้ที่จ่ายออกไปจุดอื่น ๆ สำหรับสิ่งอื่น ๆ จากนั้นพยายามทำให้เชื่องคะแนนมหาศาลในตอนท้ายหรืออาจทำสิ่งที่มีความหมายมากขึ้นกับแต่ละองค์ประกอบ ทำให้คะแนนสุดท้าย? ตัวอย่างเช่นหากคุณให้คะแนนสำหรับสินเชื่อที่ชำระแล้วคุณสามารถคำนวณคะแนนสินเชื่อที่จ่ายจากคุณ (LPO) เป็นบันทึก (1 + NumberOfLoansPaidOff) ดังนั้นใครก็ตามที่มีสินเชื่อเป็นศูนย์จะได้รับ LPO เป็น 0 ส่วนใครก็ตามที่มี 3 เงินกู้ที่จ่ายไปจะได้ LPO ที่ 1.1 ในขณะที่คนที่มีสินเชื่อ 100% ที่จ่ายไปจะได้ LPO 4.6 Cap LPO เวลา 5
Wayne

คำตอบ:


13

ช่วงปรับขนาดเช่น 200-800 (ต่อที่หนึ่ง, เช่น ) เป็นเพียงการเปลี่ยนแปลงของหน่วยงานของวัด (มันทำงานเหมือนกับการเปลี่ยนแปลงอุณหภูมิในฟาเรนไฮต์ไปเป็นอุณหภูมิในเซลเซียส)

ค่ากลางของ 500 มีวัตถุประสงค์เพื่อให้สอดคล้องกับค่าเฉลี่ยของข้อมูล ช่วงนี้มีจุดมุ่งหมายเพื่อให้สอดคล้องกับประมาณ 99.7% ของข้อมูลเมื่อข้อมูลทำตามการแจกแจงแบบปกติ ("เส้นโค้งเบลล์") มันรับประกันว่าจะรวมถึง 8/9 ของข้อมูล ( ความไม่เท่าเทียมกันของ Chebyshev )

ในกรณีนี้สูตร 1-5 คำนวณค่าเบี่ยงเบนมาตรฐานของข้อมูล นี่เป็นหน่วยวัดใหม่สำหรับข้อมูลดั้งเดิม มันต้องสอดคล้องกับ 100 หน่วยในระดับใหม่ ดังนั้นในการแปลงค่าดั้งเดิมเป็นค่าที่ปรับ

  • ลบค่าเฉลี่ย

  • หารด้วยค่าเบี่ยงเบนมาตรฐาน

  • คูณด้วย 100

  • เพิ่ม 500

หากผลออกมาเกินขอบเขต [200,800] คุณสามารถใช้ตามที่เป็นอยู่หรือ "แคลมป์" ให้อยู่ในช่วงโดยการปัดเศษขึ้นเป็น 200 ลงไปจนถึง 800

ในตัวอย่างการใช้ข้อมูล{1,3,4,5,7}ค่าเฉลี่ยคือ 4 และ SD คือ 2. ดังนั้นเมื่อการช่วยชีวิต1 กลายเป็น (1-4)/2* * * *100+500=350. ชุดข้อมูลที่ได้รับการลดความเสียหายทั้งหมดซึ่งคำนวณในทำนองเดียวกันคือ{350,450,500,550,650}.

เมื่อข้อมูลเดิมที่มีการกระจายในลักษณะที่เห็นได้ชัดไม่ปกติคุณจะต้องอีกวิธีหนึ่ง คุณไม่คำนวณค่าเฉลี่ยหรือ SD อีกต่อไป ให้ใส่คะแนนทั้งหมดตามลำดับตั้งแต่วันที่ 1 (เล็กที่สุด) ถึงnที่ใหญ่ที่สุด เหล่านี้เป็นของพวกเขาจัดอันดับ แปลงอันดับใด ๆผมเป็นเปอร์เซ็นต์ (ผม-1/2)/n. (ในตัวอย่างn=5 และข้อมูลมีการจัดอันดับแล้ว ผม=1,2,3,4,5. ดังนั้นเปอร์เซ็นต์ของพวกเขาคือ1/10,3/10,5/10,7/10,9/10มักเขียนอย่างเท่าเทียมกันว่า 10%,30%และอื่น ๆ ) ที่สอดคล้องกับเปอร์เซ็นต์ใด ๆ (ระหว่าง 0 และ 1จำเป็น) เป็นควอนไทล์ปกติ quantileมันคือการคำนวณที่มีฟังก์ชั่น quantile ปกติซึ่งมีความเกี่ยวข้องอย่างใกล้ชิดกับการทำงานผิดพลาด (การประมาณเชิงตัวเลขอย่างง่ายตรงไปตรงมากับโค้ด) ค่าของมันซึ่งโดยทั่วไปจะอยู่ระหว่าง -3 และ 3 จะต้องได้รับการลดขนาด (เหมือนเมื่อก่อน) ไปยังช่วง[200,800]. ทำสิ่งนี้โดยการคูณควอนไทม์ปกติด้วย 100 แล้วเพิ่ม 500

ฟังก์ชั่นควอไทล์ปกติมีอยู่ในแพลตฟอร์มการคำนวณจำนวนมากรวมถึงสเปรดชีต (เช่นnormsinvของ Excel เป็นต้น) ตัวอย่างเช่น,ปริมาณปกติ (หรือ "คะแนนปกติ") สำหรับข้อมูล{1,3,4,5,7} เป็น {372,448,500,552,628}.

วิธีการ " ให้คะแนนปกติ " นี้จะให้คะแนนระหว่าง 200 ถึง 800 เสมอเมื่อคุณมีค่า 370 หรือน้อยกว่า เมื่อคุณมีค่า 1111 หรือน้อยกว่าค่าทั้งหมด แต่ค่าสูงสุดและต่ำสุดจะมีคะแนนระหว่าง 200 ถึง 800


+1, ฉันได้ลบคำตอบของฉันเนื่องจากคุณเป็นวิธีที่ดีกว่าและทำให้เหมืองของฉันล้าสมัย :)
mpiktas

คุณได้ 5 ใน 1-5 ที่ไหน 4 คือค่าเฉลี่ย ควรเป็น 1-4 ใช่ไหม ฉันกำลังทดสอบกับ Python วันนี้ขอบคุณอีกครั้ง
NealWalters

@NealWalters ขออภัยนั่นเป็นนิ้วลื่น ฉันได้แก้ไขแล้วดังนั้นจึงอ่าน (1-4) / 2 * 100 + 500
whuber

4

คุณสามารถลองวิธีนี้ - ทำให้ข้อมูลของคุณอยู่ในช่วงปกติระหว่างค่า -1 ถึง +1 ดังนี้:

(individual_value-min_of_all_valuesmax_of_all_values-min_of-all_values-0.5)* * * *2
สิ่งนี้จะแปลงทุกค่าในชุดข้อมูลของคุณเป็นค่าระหว่าง -1 ถึง +1 โดยมีค่าสูงสุดและต่ำสุดจริงถูกตั้งค่าเป็น +1 และ -1 ตามลำดับจากนั้นรีเซ็ตค่า +1 และ -1 เหล่านี้ให้เป็น +0.9999 และ -0.9999 (จำเป็นสำหรับการคำนวณต่อไปนี้)

จากนั้นนำการแปลงรูปฟิชเชอร์ไปใช้กับค่าปกติที่ได้กล่าวมาแล้วข้างต้นเพื่อ "บังคับให้" เพื่อให้สอดคล้องกับการแจกแจงแบบปกติและจากนั้น "ยกเลิกการทำให้ปกติ" ค่าฟิชเชอร์เปลี่ยนแต่ละค่าเหล่านี้

Fish_value-min_all_Fish_valuesmax_all_Fish_values-min_all_Fish_values* * * *600+200
ค่าสูงสุดของการแปลงฟิชเชอร์จะถูกตั้งไว้ที่ 800 ค่าฟิชเชอร์ขั้นต่ำจะถูกตั้งค่าเป็น 200 และค่าอื่น ๆ ทั้งหมดจะอยู่ระหว่างสุดขั้วทั้งสองนี้ตามการกระจายปกติโดยประมาณ

การอ้างอิงคำถามดั้งเดิมของคุณเกี่ยวกับ SO และปัญหาเรื่องความสามารถในการปรับขนาดข้อดีของวิธีการนี้คือการให้จุดข้อมูลใหม่ไม่ได้เป็นจุดสูงสุดใหม่หรือต่ำสุดสำหรับชุดข้อมูลโดยรวมคุณสามารถใช้การคำนวณข้างต้นกับจุดข้อมูลใหม่ เพื่อรับคะแนนระหว่าง 200 ถึง 800 โดยไม่กระทบต่อคะแนนที่มีอยู่ของชุดข้อมูลดั้งเดิม หากจุดข้อมูลใหม่เป็นจำนวนสูงสุดหรือต่ำสุดใหม่คุณจะต้องคำนวณคะแนนสำหรับชุดข้อมูลทั้งหมดด้วยค่าสูงสุดหรือต่ำสุด "normalizing" ใหม่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.