แยกประชากรสองกลุ่มออกจากตัวอย่าง


13

ฉันพยายามแยกค่าสองกลุ่มออกจากชุดข้อมูลเดียว ฉันสามารถสมมติว่าหนึ่งในประชากรมีการกระจายตามปกติและมีขนาดอย่างน้อยครึ่งหนึ่งของตัวอย่าง ค่าของอันที่สองนั้นต่ำกว่าหรือสูงกว่าค่าจากอันแรก (ไม่ทราบการกระจาย) สิ่งที่ฉันพยายามทำคือค้นหาขีด จำกัด บนและล่างที่จะล้อมรอบประชากรที่กระจายตัวตามปกติจากอีกอัน

สมมติฐานของฉันให้ฉันด้วยจุดเริ่มต้น:

  • จุดทั้งหมดที่อยู่ในช่วง interquartile ของตัวอย่างนั้นมาจากประชากรที่กระจายตัวตามปกติ

ฉันพยายามที่จะทดสอบหาผู้ผิดกฎหมายที่นำพวกเขาออกจากส่วนที่เหลือของกลุ่มตัวอย่างจนกว่าพวกเขาจะไม่เข้ากับ 3 st.dev ของประชากรที่กระจายตัวตามปกติ ซึ่งไม่เหมาะ แต่ดูเหมือนจะให้ผลลัพธ์ที่สมเหตุสมผล

การสันนิษฐานของฉันเป็นไปตามสถิติหรือไม่ อะไรจะเป็นวิธีที่ดีกว่าที่จะไปเกี่ยวกับเรื่องนี้?

ป.ล. โปรดแก้ไขแท็กใครบางคน


คุณคิดว่าอีกสองกลุ่มนั้นมาจากการแจกแจงแบบปกติที่ต่างกันหรือไม่?
csgillespie

@cgillespie: มันเป็นกลุ่มเดียวกันมีเพียงสองโหมดฉันเดาและดังนั้นฉันอาจไม่สามารถสรุปได้
SilentGhost

1
คุณรู้หรือไม่ว่าสมาชิกของกลุ่มที่สองไม่ได้รวมอยู่ในกลุ่มแรกหรือคุณเพียงตั้งใจที่จะติดป้ายสมาชิกเหล่านั้นว่าเป็นของกลุ่มแรกโดยไม่ได้ตั้งใจ
Christian

คำตอบ:


10

หากฉันเข้าใจอย่างถูกต้องคุณก็สามารถนำข้อมูลปรกติสองตัวมาผสมกับข้อมูลได้ มีแพ็คเกจ R มากมายที่สามารถทำได้ ตัวอย่างนี้ใช้แพ็คเกจmixtools :

#Taken from the documentation
library(mixtools)
data(faithful)
attach(faithful)

#Fit two Normals
wait1 = normalmixEM(waiting, lambda = 0.5)
plot(wait1, density=TRUE, loglik=FALSE)

สิ่งนี้ให้:

ส่วนผสมของสองบรรทัดฐาน http://img294.imageshack.us/img294/4213/kernal.jpg

แพคเกจยังมีวิธีการที่ซับซ้อนมากขึ้น - ตรวจสอบเอกสาร


1
รูปภาพที่คุณแนบหมดอายุแล้ว
naktinis

3
  1. สำหรับข้อมูลในช่วง IQR คุณควรใช้การแจกแจงแบบปกติที่ถูกตัดทอน (เช่น R package gamlss.tr) เพื่อประเมินพารามิเตอร์ของการแจกแจงนี้
  2. อีกวิธีคือใช้ตัวแบบผสมกับส่วนประกอบ 2 หรือ 3 ตัว (การแจกแจง) คุณสามารถติดตั้งโมเดลดังกล่าวได้โดยใช้แพ็คเกจ gamlss.mx (สามารถระบุการกระจายจากแพคเกจ gamlss.dist สำหรับแต่ละองค์ประกอบของส่วนผสม)

2

นี่ถือว่าคุณไม่รู้ด้วยซ้ำว่าการแจกแจงครั้งที่สองนั้นเป็นเรื่องปกติหรือไม่ โดยทั่วไปฉันจัดการกับความไม่แน่นอนนี้โดยเน้นที่การกระจายตัวแบบปกติเท่านั้น นี่อาจเป็นวิธีที่ดีที่สุดหรือไม่ก็ได้

หากคุณสามารถสันนิษฐานได้ว่าประชากรสองคนนั้นถูกแยกออกจากกันอย่างสมบูรณ์ (เช่นค่าทั้งหมดจากการกระจาย A นั้นน้อยกว่าค่าทั้งหมดจากการแจกแจง B) ดังนั้นวิธีการหนึ่งคือการใช้ฟังก์ชั่นการเพิ่มประสิทธิภาพ () ใน R เพื่อค้นหาจุดพัก ให้ค่าประมาณของค่าเฉลี่ยและค่า sd ของการแจกแจงแบบปกติที่ทำให้ข้อมูลมีแนวโน้มมากที่สุด:

#generate completely separated data
a = rnorm(100)
b = rnorm(100,10)
while(!all(a<b)){
    a = rnorm(100)
    b = rnorm(100,10)
}

#create a mix
mix = c(a,b)

#"forget" the original distributions
rm(a)
rm(b)

#try to find the break point between the distributions
break_point = optimize(
    f = function(x){
        data_from_a = mix[mix<x]
        likelihood = dnorm(data_from_a,mean(data_from_a),sd(data_from_a))
        SLL = sum(log(likelihood))
        return(SLL)
    }
    , interval = c(sort(mix)[2],max(mix))
    , maximum = TRUE
)$maximum

#label the data
labelled_mix = data.frame(
    x = mix
    , source = ifelse(mix<break_point,'A','B')
)
print(labelled_mix)

หากคุณไม่สามารถแยกจากกันได้อย่างสมบูรณ์ฉันคิดว่าคุณจะต้องมีการกระจายตัวสำหรับการแจกแจงครั้งที่สองแล้วใช้การสร้างแบบผสม โปรดทราบว่าการสร้างแบบจำลองการผสมจะไม่ติดป้ายข้อมูลแต่ละจุด แต่จะให้สัดส่วนการผสมและการประมาณค่าพารามิเตอร์ของการแจกแจงแต่ละแบบ (เช่นค่าเฉลี่ย, sd และอื่น ๆ )


optimizeต้องใช้การแจกแจงสองแบบเป็นแบบเคียงข้างกันตามที่ฉันเข้าใจ ในกรณีของฉันหนึ่งอยู่ภายในอื่น ๆ เช่นค่าจากประชากรที่สองอยู่ทั้งสองด้านของขีด จำกัด
SilentGhost

1

ฉันประหลาดใจที่ไม่มีใครแนะนำวิธีแก้ปัญหาที่ชัดเจน:

 #generate completely separated data
library(robustbase)
set.seed(123)  
x<-rnorm(200)
x[1:40]<-x[1:40]+10  
x[41:80]<-x[41:80]-10
Rob<-ltsReg(x~1,nsamp="best")
#all the good guys
which(Rob$raw.weights==1)

ตอนนี้สำหรับคำอธิบาย: ltsRegฟังก์ชั่นในแพคเกจrobustbaseเมื่อมีการเรียกด้วยตัวเลือก

nsamp="best"

ให้น้ำหนัก MCD ที่ไม่เปลี่ยนแปลง (แน่นอน) (นี่คือน้ำหนัก n-vector 0-1 ที่เก็บไว้ใน$raw.weightsวัตถุอัลกอริทึมในการระบุน้ำหนักคือตัวประมาณ MCD (1)

h=(n+2)/2

hx(i)ith
(x(1),...,x(h+1))(x(2),...,x(h+2))

nh

(1) PJ Rousseeuw (1984) ค่ามัธยฐานของการถดถอยกำลังสองน้อยที่สุด, วารสารสมาคมสถิติอเมริกัน

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