พวกเรามีปัญหาเรื่อง“ สงสาร upvotes” หรือไม่?


51

ฉันรู้ว่านี่อาจฟังดูเหมือนว่าเป็นหัวข้อนอก แต่ได้ยินฉัน

ที่ Stack Overflow และที่นี่เราได้รับคะแนนโหวตจากโพสต์ทั้งหมดนี้เก็บไว้ในรูปแบบตาราง

เช่น:

โพสต์ id ผู้มีสิทธิเลือกตั้ง ID ลงคะแนนประเภท datetime
------- -------- --------- --------
10 1 2 2000-1-1 10:00:01 
11 3 3 2000-1-1 10:00:01 
10 5 2 2000-1-1 10:00:01 

... และต่อไป โหวตประเภท 2 คือ upvote, โหวตโหวต 3 คือ downvote คุณสามารถสอบถามรุ่นนี้ของข้อมูลนี้แบบไม่เปิดเผยชื่อได้ที่http://data.stackexchange.com

มีการรับรู้ว่าหากโพสต์ถึงคะแนน -1 หรือต่ำกว่าก็มีแนวโน้มที่จะ upvoted นี่อาจเป็นเพียงการยืนยันความลำเอียงหรือมันอาจจะหยั่งรากในความเป็นจริง

เราจะวิเคราะห์ข้อมูลนี้เพื่อยืนยันหรือปฏิเสธสมมติฐานนี้อย่างไร เราจะวัดผลกระทบของอคตินี้อย่างไร


1
เราสามารถรับตัวอย่างของแบบสอบถามได้ไหม ไม่ใช่ทุกคนที่รอบรู้ในการเขียนคำสั่ง SQL การมีข้อมูลตัวอย่างอาจกระตุ้นให้ผู้คนลองเล่นด้วย +1 สำหรับคำถาม
mpiktas

@Jeff การลงคะแนนจะไม่ระบุชื่อคุณสามารถรับข้อมูลบางส่วนจากการถ่ายโอนข้อมูลเท่านั้นซึ่งจะรวมถึงการเปลี่ยนทั้งหมดแม้ว่านี่คือตัวอย่างข้อมูลอย่างรวดเร็วstackexchange.com/stackoverflow/q/101738ข้อมูลที่ไม่ระบุตัวตนแบบเต็มมีอยู่ในการถ่ายโอนข้อมูลสาธารณะ
Sam Saffron

ทำไมต้อง upvotes ความน่าจะเป็นของการขึ้น - ลงหรือการลงคะแนนจะแยกกันตามค่าเฉพาะแต่ละรายการจะน่าสนใจอย่างไร?
Bob Durrant

@ บ๊อบแน่นอนว่าพวกเขาเห็นด้วย
Sam Saffron

1
ฉันเคยเห็นเว็บไซต์ประเภทอื่น ๆ ทำให้งงงวยคะแนน (เช่นเพิ่มเสียงก่อนที่จะแสดง) และบางครั้งก็ซ่อนอย่างสมบูรณ์ - และลงคะแนนในช่วงเวลาสั้น ๆ เพื่อหลีกเลี่ยงรูปแบบต่างๆของ bandwagonning, สงสารคะแนนและอื่น ๆ 'สังคม' องค์ประกอบของการลงคะแนน
Glen_b

คำตอบ:


32

คุณสามารถใช้รูปแบบหลายขั้นตอนหรือห่วงโซ่มาร์คอฟ (แพ็คเกจ msm ใน R เป็นวิธีหนึ่งที่เหมาะสมกับสิ่งเหล่านี้) จากนั้นคุณสามารถดูเพื่อดูว่าความน่าจะเป็นในการเปลี่ยนจาก -1 เป็น 0 มากกว่าจาก 0 ถึง 1, 1 ถึง 2 ฯลฯ คุณยังสามารถดูเวลาเฉลี่ยที่ -1 เมื่อเทียบกับคนอื่น ๆ เพื่อดูว่ามันสั้นกว่าหรือไม่ .


3
+1 การอ้างอิงที่ดี มีบทความในวารสารซอฟต์แวร์สถิติเกี่ยวกับแพ็คเกจ msm ดูเหมือนว่าแบบจำลองนี้เหมาะสำหรับงานประเภทนี้
mpiktas

3
แนวคิดโมเดลลูกโซ่มาร์คอฟดูเหมือนจะเป็นเรื่องดี แต่เวลาเฉลี่ยที่ -1 จะไม่ให้เรื่องราวทั้งหมด เป็นไปได้ (และเป็นไปได้ - คิดคำถามที่ไม่ดี) ว่ามีแนวโน้มที่จะถูกลดระดับลงที่ -1 มากกว่าที่อื่นด้วย
Bob Durrant

ฉันเดาว่าสิ่งแรกที่เราควรทำก่อนคือจัดกลุ่มโหวต - วิถี - ผู้ที่ได้ (เกือบ) เท่านั้นขึ้น / ลง (คำถามยอดนิยม / ไม่ดีมาก) และผู้ที่ถกเถียงกันมากขึ้น จากนั้นคุณสามารถทำโซ่มาร์คอฟได้จากสามคลาส
Jonas

13

ทำการทดลอง สุ่มลงครึ่งโพสต์ใหม่ในแต่ละช่วงเวลาทุกวัน


5
เย็นเราควรสังเกตการเพิ่มขึ้นอย่างมีนัยสำคัญใน "นักวิจารณ์" ป้ายและอาจจะลดลงของแรงจูงใจสำหรับผู้ใช้ใหม่ :-) ดีกว่าที่จะเริ่มต้นกับผู้ใช้สูงตัวแทนในกรณีนี้ (ที่มีความเสี่ยงของการให้น้ำหนักการทดลอง!)
CHL

14
ที่จริงแล้วเราสามารถทำได้ดีกว่านี้ ... โดยใช้การทดสอบ AB เราสามารถเลือกที่จะแสดงครึ่งหนึ่งของคำถามที่โหวต -1 บนเว็บไซต์เป็น 0 และครึ่งเป็น -1 ... และดูว่าทั้งสองกลุ่มมีแนวโน้มที่จะ upvoted! แยบยล
Sam Saffron

4
แนวคิดการทดสอบควบคุมคุณภาพของการโพสต์ แต่ (1) สิ่งที่ถูกลดระดับควรตกลงล่วงหน้าเพื่อเข้าร่วมในการทดสอบและ (2) หลังจากช่วงเวลาสั้น ๆ ควรลบการลดระดับ
zbicyclist

2
+1 (และ +1 สำหรับความคิดเห็นทั้งหมดที่นี่ด้วย): การทดสอบย้อนกลับที่ควบคุมได้ซึ่งสื่อสารล่วงหน้าแก่ผู้ใช้ทุกคนที่อาจได้รับผลกระทบและดำเนินการโดยได้รับการอนุมัติเป็นหนึ่งในวิธีที่แข็งแกร่งที่สุดในการรับข้อมูลนี้
whuber

13

สรุปคำตอบของฉัน ฉันชอบการสร้างแบบจำลองลูกโซ่มาร์คอฟ แต่มันก็คิดถึงแง่มุม "ชั่วคราว" ในอีกด้านหนึ่งการมุ่งเน้นไปที่ด้านชั่วขณะ (เช่นเวลาเฉลี่ยที่ ) คิดถึงด้าน "การเปลี่ยนแปลง" ฉันจะเข้าสู่การสร้างแบบจำลองทั่วไปต่อไปนี้ (ซึ่งมีสมมติฐานที่เหมาะสมสามารถนำไปสู่ ​​[กระบวนการมาร์คอฟ] [1]) นอกจากนี้ยังมีสถิติ "การเซ็นเซอร์" จำนวนมากที่อยู่เบื้องหลังปัญหานี้ (ซึ่งแน่นอนว่าเป็นปัญหาดั้งเดิมของความน่าเชื่อถือของซอฟต์แวร์หรือไม่) สมการสุดท้ายของคำตอบของฉันให้ค่าประมาณความน่าจะเป็นสูงสุดของความเข้มการลงคะแนน (ขึ้นกับ "+" และดาวโจนส์ที่มี "-") สำหรับสถานะการลงคะแนนที่กำหนด อย่างที่เราเห็นจากสมการ มันเป็นสื่อกลางจากกรณีเมื่อคุณประมาณการความน่าจะเป็นการเปลี่ยนแปลงและกรณีเมื่อคุณวัดเวลาที่ใช้ในสถานะที่กำหนดเท่านั้น หวังว่าความช่วยเหลือนี้-1

การสร้างแบบจำลองทั่วไป (เพื่อย้ำคำถามและสมมติฐาน) อนุญาตและ( S i ) i 1เป็นแบบจำลองตัวแปรสุ่มตามลำดับวันที่ลงคะแนนและเครื่องหมายโหวตที่เกี่ยวข้อง (+1 สำหรับ upvote, -1 สำหรับ downvote) กระบวนการลงคะแนนเป็นเรื่องง่าย(VDi)i1(Sผม)ผม1

โดยที่

Yเสื้อ=Yเสื้อ+-Yเสื้อ-

Yเสื้อ+=Σผม=01VDผมเสื้อ,Sผม=1 และ Yเสื้อ-=Σผม=01VDผมเสื้อ,Sผม=-1

ปริมาณที่สำคัญที่นี่คือความตั้งใจของ -jump λ ϵ t = lim d t 0 1ε โดยที่ ϵสามารถ -หรือ +และ F tเป็นการกรองที่ดีในกรณีจำพวกโดยไม่มีความรู้อื่น ๆ มันจะเป็น: F t = σ ( Y + t , Y - t , V D 1 , , V D Y + t

λเสื้อε=Limdเสื้อ01dเสื้อP(Yเสื้อ+dเสื้อε-Yเสื้อε=1|Fเสื้อ)
ε-+Fเสื้อ )
Fเสื้อ=σ(Yเสื้อ+,Yเสื้อ-,VD1,...,VDYเสื้อ++Yเสื้อ-,S1,...,SYเสื้อ++Yเสื้อ-)

แต่ตามสายของคำถามของคุณผมคิดว่าคุณคิดว่าโดยปริยาย

P(Yเสื้อ+dเสื้อε-Yเสื้อε=1|Fเสื้อ)=P(Yเสื้อ+dเสื้อε-Yเสื้อε=1|Yเสื้อ)
ε=+,-(μผมε)ผมZλเสื้อε=μYเสื้อε

μ-1+-μ0+>0

Yเสื้อZQ

ผม,JZQผม,ผม+1=μผม+Qผม,ผม-1=μผม-Qผมผม=1-(μผม++μผม-)QผมJ=0 ถ้า |ผม-J|>1

(μผม+)ผมμ+μ-

(T1,η1),...,(Tพี,ηพี)TJJเสื้อชั่วโมงพีผมYเสื้อ=ผมηJ+1-10

μผม+μผม-(นาที(Exพี(μผม+),Exพี(μผม-)),η)η

เล็มม่าถ้าX+Exพี(μ+)X-Exพี(μ-)T=นาที(X+,X-)Exพี(μ++μ-)P(X+1<X-)=μ+μ++μ-

(เสื้อ,ε)(T,η)

(เสื้อ,ε)=ก.μ++μ-(1(ε=+1)* * * *μ++1(ε=-1)* * * *μ-μ++μ-)
ก.aa>0aμ+μ-

(μ^+,μ^-)=aRก.ม.ผมnLN(μ-+μ+)((μ-+μ+)Σผม=1พีTผม+พี)-พี-LN(μ-)-พี+LN(μ+)
พี-=|ผม:δผม=-1|พี+=|ผม:δผม=+1|

ความคิดเห็นสำหรับแนวทางขั้นสูงเพิ่มเติม

ผม-1

ความเป็นไปได้อื่น ๆ อาจรวมถึงความเป็นไปได้ของ

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