วิธีการค้นหาการจัดกลุ่ม (วิถี) ในข้อมูลระยะยาว?


11

บริบท

ฉันต้องการตั้งฉากก่อนที่จะขยายคำถาม

ฉันมีข้อมูลตามยาวการวัดผลของอาสาสมัครทุก ๆ 3 เดือนผลลัพธ์หลักคือตัวเลข (อย่างต่อเนื่องถึง 1dp) ในช่วง 5 ถึง 14 โดยมีค่าเป็นกลุ่ม (ของจุดข้อมูลทั้งหมด) อยู่ระหว่าง 7 และ 10 ถ้าฉันทำ พล็อตสปาเก็ตตี้ (อายุบนแกน x และเส้นสำหรับแต่ละคน) เห็นได้ชัดว่ามันยุ่งเหยิงอย่างมากเมื่อฉันมีอาสาสมัครมากกว่า 1,500 คน แต่มีความชัดเจนในการก้าวไปสู่ค่าที่สูงขึ้นเมื่ออายุเพิ่มขึ้น

คำถามที่กว้างกว่า:สิ่งที่เราต้องการจะทำคือการระบุกลุ่มที่มีแนวโน้ม (กลุ่มที่เริ่มต้นสูงและอยู่สูงกลุ่มที่เริ่มต่ำและอยู่ต่ำผู้ที่เริ่มต่ำและเพิ่มขึ้นสูง ฯลฯ ) จากนั้นเราสามารถ ดูปัจจัยส่วนบุคคลที่เกี่ยวข้องกับการเป็นสมาชิก 'กลุ่มแนวโน้ม'

คำถามของฉันที่นี่เกี่ยวข้องกับส่วนแรกโดยเฉพาะการจัดกลุ่มตามแนวโน้ม

คำถาม

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

ฉันได้ดู Proc Traj ใน SAS และ M-Plus ที่เพื่อนร่วมงานแนะนำซึ่งฉันกำลังดูอยู่ แต่ต้องการทราบว่าคนอื่นคิดอย่างไรกับเรื่องนี้


1
เป็นเพียงจุดเริ่มต้น แต่อาจตรวจสอบคำตอบสำหรับคำถามนี้: stats.stackexchange.com/questions/2777/…
Jeromy Anglim

ขอบคุณ Jeromy ตัวเลือก kml นั้นน่าสนใจฉันชอบความคิดที่ให้ไว้ใน R แต่ฉันไม่แน่ใจว่าฉันสามารถใช้เฟรมเวิร์กกับข้อมูลของฉันได้หรือไม่เนื่องจากอาสาสมัครมาหลายยุคหลายครั้ง เยี่ยมชม 2 'ฯลฯ และบางคนมีการเยี่ยมชม 10 ครั้งขณะที่คนอื่น ๆ มี 50 + ...
nzcoops

ตรวจสอบkml แพ็คเกจ - ที่มีฟังก์ชั่นการใช้งานที่คุณต้องการ กระดาษใน JoSS อธิบายรายละเอียด นอกจากนี้kml3dและkmlShapeอาจจะเป็นที่สนใจ
radek

คำตอบ:


11

ฉันใช้MfuzzในRเพื่อจัดกลุ่มชุดข้อมูล microarray ตามเวลา Mfuzz ใช้ "soft-clustering" โดยทั่วไปบุคคลสามารถปรากฏในมากกว่าหนึ่งกลุ่ม

@Andy ชี้ให้เห็นในความคิดเห็นกระดาษต้นฉบับใช้ข้อมูล CTN อย่างไรก็ตามฉันสงสัยว่ามันจะทำงานได้ดีสำหรับข้อมูลที่ไม่ต่อเนื่องของคุณ โดยเฉพาะอย่างยิ่งเมื่อคุณสำรวจชุดข้อมูล นี่คือตัวอย่างรวดเร็วใน R:

##It's a bioconductor package
library(Mfuzz)
library(Biobase)

## Simulate some data
## 6 time points and 90 individuals
tps = 6;cases = 90
d = rpois(tps*cases, 1)  ##Poisson distribution with mean 1
m = matrix(d, ncol=tps, nrow=cases)

##First 30 individuals have increasing trends
m[1:30,] = t(apply(m[1:30,], 1, cumsum))

##Next 30 have decreasing trends
##A bit hacky, sorry
m[31:60,] = t(apply(t(apply(m[31:60,], 1, cumsum)), 1, rev))

##Last 30 individuals have random numbers from a Po(1)

##Create an expressionSet object
tmp_expr = new('ExpressionSet', exprs=m)

##Specify c=3 clusters
cl = mfuzz(tmp_expr, c=3, m=1.25)
mfuzz.plot(tmp_expr,cl=cl, mfrow=c(2, 2))

ให้พล็อตต่อไปนี้:

การจัดกลุ่ม Mfuzz


ขอบคุณสำหรับการอ้างอิงฉันไม่เคยเจอสิ่งนี้มาก่อน อัลกอริทึมการจัดกลุ่มนี้จะเหมาะสมกับข้อมูลที่มีการแจกแจงจำนวนต่ำอย่างที่ OP ได้กล่าวถึง (หรือข้อมูลแบบแยกขั้ว) หรือไม่? กระดาษอ้างอิง (Futschik & Carlisle 2005) ข้อมูลที่ใช้ถูกแปลงเป็นแบบต่อเนื่อง
Andy W

@Andy: จุดดี ฉันได้รวมการจำลองอย่างรวดเร็ว ทุกอย่างดูเหมือนจะโอเค แต่อาจมีทางออกที่ดีกว่า
csgillespie

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

@csgillespie - มันเจ๋งมาก ตอนนี้ฉันกำลังเล่นกับข้อมูลจริง คุณรู้หรือไม่ว่ามีวิธีการประมาณจำนวนกลุ่มหรือไม่?
มาโคร

4

ฉันคาดหวังว่าจะมีแพ็คเกจ MPLUS เพื่อทำสิ่งที่คุณต้องการ มีกระดาษใน Psychometrika เกี่ยวกับเรื่องนี้เกือบทั้งหมด

springerlink.com/content/25r110007g417187

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

http://onlinelibrary.wiley.com/doi/10.1111/j.0006-341X.1999.00463.x/abstract

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

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

http://www.statmodel.com/cgi-bin/discus/discus.cgi

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