การตีความการทดสอบจุ่มของ Hartigans


18

ฉันอยากจะหาวิธีที่จะบอกปริมาณความเข้มของความ bimodality ของการแจกแจงบางอย่างที่ฉันได้รับสังเกตุ จากสิ่งที่ฉันอ่านยังคงมีการถกเถียงกันเกี่ยวกับวิธีการหาปริมาณ bimodality ฉันเลือกที่จะใช้การทดสอบการจุ่มของ Hartigans ซึ่งน่าจะเป็นสิ่งเดียวที่มีอยู่ใน R (กระดาษต้นฉบับ: http://www.stat.washington.edu/wxs/Stat593-s03/Literature/hartigan85a.pdf ) ทดสอบจุ่ม Hartigans' หมายถึง: 'จุ่มมาตรการทดสอบ multimodality ในกลุ่มตัวอย่างโดยการแตกต่างสูงสุดที่มากกว่าจุดตัวอย่างทั้งหมดระหว่างฟังก์ชั่นการกระจายเชิงประจักษ์และฟังก์ชั่นการกระจายรูปแบบเดียวที่ช่วยลดความแตกต่างสูงสุด'

ฉันต้องการที่จะเข้าใจอย่างถ่องแท้ว่าฉันควรตีความสถิตินี้อย่างไรก่อนที่จะใช้ ฉันคาดหวังว่าการทดสอบการจุ่มจะเพิ่มขึ้นหากการแจกแจงนั้นต่อเนื่องหลายรูปแบบ (เนื่องจากมันถูกกำหนดเป็น "ความแตกต่างสูงสุดจากการกระจายตัวแบบเดียว") แต่ : คุณสามารถอ่านได้ในหน้าวิกิพีเดียเกี่ยวกับการกระจายแบบ multimodal ว่า"ค่าน้อยกว่า 0.05 บ่งบอกถึงความคุ้มค่าและความสำคัญของ bimodality มากกว่า 0.05 แต่น้อยกว่า 0.10 แสดงให้เห็นถึงความแตกต่างที่มีนัยสำคัญเล็กน้อย" . ข้อความดังกล่าวมาจากบทความนี้(รูปที่ 2) ตามบทความนี้ดัชนีทดสอบการจุ่มอยู่ใกล้กับ 0 เมื่อการแจกแจงแบบ bimodal มันทำให้ฉันสับสน

ในการแปลความหมายอย่างถูกต้องของการทดสอบการจุ่มของ Hartigans ฉันได้สร้างการแจกแจงบางส่วน (รหัสต้นฉบับมาจากที่นี่ ) และฉันเพิ่มมูลค่าของ exp (mu2) (เรียกว่า 'ความเข้มของ bimodularity' จากนี้ไป- แก้ไข: ฉันควรเรียกมันว่า ของ bimodality ' ) เพื่อรับ bimodality ในกราฟแรกคุณจะเห็นตัวอย่างของการแจกแจง จากนั้นฉันประเมินดัชนี diptest (กราฟที่สอง) และค่า p (กราฟที่สาม) ที่เกี่ยวข้อง (แพคเกจdiptest ) กับการแจกแจงแบบจำลองที่แตกต่างกันเหล่านั้น รหัส R ที่ใช้อยู่ท้ายโพสต์ของฉัน

สิ่งที่ฉันแสดงที่นี่คือดัชนีการทดสอบการจุ่มสูงและ Pvalue ต่ำเมื่อการกระจายตัวของ bimodal ซึ่งตรงกันข้ามกับสิ่งที่คุณสามารถอ่านบนอินเทอร์เน็ต

ฉันไม่มีความเชี่ยวชาญด้านสถิติดังนั้นฉันจึงแทบไม่เข้าใจกระดาษของ Hartigans ฉันต้องการได้รับความคิดเห็นเกี่ยวกับวิธีที่ถูกต้องที่เราควรตีความการทดสอบการแช่แข็งของ Hartigans ฉันผิดที่ไหน

ขอบคุณทุกคน. ความนับถือ,

TA

ตัวอย่างของการจำลองการกระจาย: ตัวอย่างการจำลองการแจกแจง

ดัชนีการทดสอบการจุ่มของ Hartigan ที่เกี่ยวข้อง: ป้อนคำอธิบายรูปภาพที่นี่

การทดสอบการจุ่มของ Hartigan p.value ที่เกี่ยวข้อง: ป้อนคำอธิบายรูปภาพที่นี่

library(diptest)
library(ggplot2)


# CONSTANT PARAMETERS
sig1 <- log(3)
sig2 <- log(3)
cpct <- 0.5
N=1000

#CREATING BIMOD DISTRIBUTION
bimodalDistFunc <- function (n,cpct, mu1, mu2, sig1, sig2) {
  y0 <- rlnorm(n,mean=mu1, sd = sig1)
  y1 <- rlnorm(n,mean=mu2, sd = sig2)

  flag <- rbinom(n,size=1,prob=cpct)
  y <- y0*(1 - flag) + y1*flag 
}

#DIP TEST
DIP_TEST <- function(bimodalData) {
  TEST <- dip.test(bimodalData)
  return(TEST$statistic[[1]])   # return(TEST$p.value[[1]])    to get the p value
}
DIP_TEST(bimodalData)


# SIMULATION
exp_mu1 = 1
max_exp_mu2 = 100
intervStep = 100
repPerInt = 10

# single distibutions
expMu2Value <- c()
bimodalData <- c()
mu1 <- log(exp_mu1)   
mu2 <- log(exp_mu1)
bimodalData <- c(bimodalData,log(bimodalDistFunc(n=N,cpct,mu1,mu2, sig1,sig2)))
expMu2Value <- c(expMu2Value,rep(exp_mu1,length(log(bimodalDistFunc(n=N,cpct,mu1,mu2, sig1,sig2)))))

mu1 <- log(exp_mu1)   
mu2 <- log(max_exp_mu2)
bimodalData <- c(bimodalData,log(bimodalDistFunc(n=N,cpct,mu1,mu2, sig1,sig2)))
expMu2Value <- c(expMu2Value,rep(max_exp_mu2,length(log(bimodalDistFunc(n=N,cpct,mu1,mu2, sig1,sig2)))))

mu1 <- log(exp_mu1)   
mu2 <- log(trunc((max_exp_mu2-exp_mu1)/2+1))
bimodalData <- c(bimodalData,log(bimodalDistFunc(n=N,cpct,mu1,mu2, sig1,sig2)))
expMu2Value <- c(expMu2Value,rep(trunc((max_exp_mu2-exp_mu1)/2+1),length(log(bimodalDistFunc(n=N,cpct,mu1,mu2, sig1,sig2)))))

tableExamples <- data.frame(expMu2Value,bimodalData)
tableExamples$expMu2Value <- as.factor(tableExamples$expMu2Value)
ExamplePlot <- ggplot(tableExamples)+
  geom_histogram(aes(bimodalData),color='white')+
  ylab("Count")+
  xlab("")+
  facet_wrap(~expMu2Value)+
  ggtitle("Intensity of bimodularity")

# calculation of the dip test index
exp_mu2Int = seq(from=exp_mu1,to=max_exp_mu2,length.out=intervStep)
expmu2Vec = c()
dipStat = c()
testDone = c()
for(exp_mu2 in exp_mu2Int){
  mu1 <- log(exp_mu1)   
  mu2 <- log(exp_mu2)
  for(rep in 1:repPerInt){
    bimodalData <- log(bimodalDistFunc(n=N,cpct,mu1,mu2, sig1,sig2))
    diptestone = DIP_TEST(bimodalData)
    expmu2Vec = c(expmu2Vec,exp_mu2)
    dipStat = c(dipStat,diptestone)
    testDone = c(testDone,"diptest")
  }
}
table = data.frame(expmu2Vec,dipStat,testDone)

IndexPlot <- ggplot(table)+
  geom_point(aes(expmu2Vec,dipStat,color=testDone))+
  ylab("Index")+
  xlab("Intensity of Bimodularity")+
  scale_color_discrete(name="Test")

ExamplePlot
IndexPlot

3
คำถามที่ละเอียดมากเกี่ยวกับหัวข้อที่เป็นความลับตามมาตรฐานของนักสถิติ คำถามแรกที่ชัดเจนก่อนที่คน ๆ หนึ่งจะตีความหมายก็คือ "ทำไมคุณต้องมีการทดสอบนี้? ข้อมูลอะไรที่มีไว้เพื่อสื่อสาร?" สามารถให้บริบทเพิ่มเติมสำหรับแรงจูงใจที่นำคุณไปสู่ประเด็นปลายน้ำที่มากขึ้นของการตีความผลลัพธ์จาก "การทดสอบแบบจุ่ม" ได้หรือไม่? กล่าวอีกอย่างหนึ่งนอกเหนือจากความสะดวกในการเขียนโปรแกรม R แล้วเส้นทางของตรรกะใดที่ทำให้คุณได้รับ "การทดสอบแบบจุ่ม" ตั้งแต่แรก?
Mike Hunter

ขอบคุณสำหรับคำตอบไมค์ ฉันกำลังทำงานกับแบบจำลองเชิงทฤษฎีในชีววิทยาวิวัฒนาการและฉันกำลังทำการวิเคราะห์ความไว โดยเฉพาะอย่างยิ่งฉันสังเกตว่าการเปลี่ยนแปลงพารามิเตอร์บางตัวจะปรับเปลี่ยนการกระจายตัวของตัวแปรเอาต์พุตจาก unimodal เป็น bimodal (ซึ่งจริงๆแล้วน่าสนใจมาก) นั่นเป็นเหตุผลที่ฉันกำลังมองหาสถิติง่ายๆเพื่ออธิบายความหลากหลายของการแจกแจง มันจะช่วยให้ฉันสามารถมุ่งเน้นการวิเคราะห์ความไวในหลายมิติ
TA

ฉันพบว่าการทดสอบการจุ่มสามารถคำนวณได้ง่ายใน R และสามารถหาปริมาณความเบี่ยงเบนจากการกระจายแบบ Unimodal แน่นอนฉันจะสนใจจริงๆโดยสถิติอื่น ๆ ที่อธิบายถึงความหลากหลายของการกระจาย
TA

อืม ... การใส่ชื่อพหุนามต่ำต้อยเพียงเล็กน้อยอาจเป็นแนวทางของ "คนจน" ในการจัดการกับความโค้งที่คุณสังเกตเห็นและอาจถูกนำไปใช้และตีความได้ง่ายกว่าการทดสอบของ Hartigan คุณไม่ได้บอกว่าปัญหาของคุณรวมถึงการจัดการกับฟังก์ชั่นการเจริญเติบโตหรือไม่ ยกตัวอย่างเช่นในการพัฒนามนุษย์มี "การกระแทก" ที่รู้จักกันดีหลายอย่างในวิถีการเจริญเติบโตที่จุดต่าง ๆ ของวงจรชีวิต โมเดลที่ไม่ใช่พาราเมตริกนั้นถูกพบว่ามีความเหมาะสมและใกล้เคียงกับความไม่เชิงเส้นตรงมากกว่าโมเดลพาราเมตริก
Mike Hunter

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

คำตอบ:


6

คุณฟรีแมน (ผู้เขียนบทความที่ฉันบอกคุณเกี่ยวกับเรื่องนี้) บอกฉันว่าเขากำลังดูเฉพาะที่ Pvalue ของการทดสอบการจุ่ม ความสับสนนี้มาจากประโยคของเขา:
"ค่า HDS ช่วง 0-1 มีค่าน้อยกว่า 05 แสดงให้เห็น bimodality อย่างมีนัยสำคัญและคุณค่ามากกว่า 05 แต่น้อยกว่า 0.10 บอก bimodality อย่างมีนัยสำคัญร่อแร่" ค่า HDS สอดคล้องกับ Pvalue ไม่ใช่ค่าสถิติการทดสอบการจุ่ม มันไม่ชัดเจนในกระดาษ

การวิเคราะห์ของฉันดี: สถิติการทดสอบจิ้มเพิ่มขึ้นเมื่อการแจกแจงเบี่ยงเบนไปจากการกระจายแบบไม่เปลี่ยนโหมด

การทดสอบ Bimodality และการทดสอบของ Silverman สามารถคำนวณได้ง่ายใน R และทำงานได้ดี


1
กรุณาลงทะเบียน & รวมบัญชีของคุณ คุณสามารถหาข้อมูลเกี่ยวกับวิธีการทำเช่นนี้ในบัญชีของฉันส่วนของเราศูนย์ช่วยเหลือ
gung - Reinstate Monica
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.