การประเมินพลังของการทดสอบภาวะปกติ (ใน R)


9

ฉันต้องการประเมินความถูกต้องของการทดสอบภาวะปกติมากกว่าขนาดตัวอย่างที่แตกต่างกันใน R (ฉันรู้ว่าการทดสอบภาวะปกติอาจทำให้เข้าใจผิด ) ตัวอย่างเช่นหากต้องการดูการทดสอบของ Shapiro-Wilk ฉันกำลังทำการจำลองต่อไปนี้ (เช่นเดียวกับการวางแผนผลลัพธ์) และคาดว่าเมื่อขนาดตัวอย่างเพิ่มความน่าจะเป็นที่จะปฏิเสธการปฏิเสธจะลดลง:

n <- 1000
pvalue_mat <- matrix(NA, ncol = 1, nrow = n)

for(i in 10:n){
    x1 <- rnorm(i, mean = 0, sd = 1)
    pvalue_mat[i,] <- shapiro.test(x1)$p.value
}   

plot(pvalue_mat)

ความคิดของฉันน่าจะเป็นว่าเมื่อขนาดของกลุ่มตัวอย่างเพิ่มขึ้นควรมีอัตราการปฏิเสธที่ต่ำกว่า ฉันคิดว่าฉันเข้าใจผิด - ยินดีต้อนรับทุกความคิด


2
คุณอาจต้องการดู: stats.stackexchange.com/questions/2492/…
nico

คำตอบ:


7

คุณกำลังจำลองภายใต้สมมติฐานว่าง (การแจกแจงแบบปกติ) ดังนั้นอัตราการปฏิเสธจะมีแนวโน้มที่ระดับนัยสำคัญตามที่คาดไว้ ในการประเมินพลังงานคุณจำเป็นต้องจำลองภายใต้การแจกแจงที่ไม่ปกติ มีความเป็นไปได้ที่ไม่สิ้นสุด / สถานการณ์ (เช่นการแจกแจงแกมม่าที่เพิ่มความเบ้, การแจกแจงแบบทีลดค่า df เป็นต้น) ให้เลือกขึ้นอยู่กับขอบเขตของการศึกษาของคุณ


ขอบคุณสำหรับคำตอบ เมื่อฉันจำลองการแจกแจงแบบไม่ปกติฉันสังเกตเห็นรูปแบบนูนที่เกี่ยวกับต้นกำเนิด - นั่นคือเมื่อขนาดตัวอย่างใหญ่ขึ้นสำหรับการแจกแจงแบบไม่ปกติใด ๆ ความน่าจะเป็นที่จะปฏิเสธการเพิ่มค่าปกติ อย่างไรก็ตามฉันไม่เข้าใจว่าทำไมมันจึงไม่ตรงกันข้ามเมื่อวาดจากการแจกแจงแบบปกติ: ทำไมความน่าจะเป็นที่จะปฏิเสธการลดค่า Null ไม่ได้เมื่อขนาดตัวอย่างใหญ่ขึ้น? ขอบคุณ
user94759

3
เนื่องจากความน่าจะเป็นที่จะยอมรับข้อผิดพลาดประเภท 1 ดังกล่าวคือโดยการกำหนดเท่ากับระดับความสำคัญซึ่งคงที่ หรือใส่ที่แตกต่างกันค่า p จะกระจายอย่างสม่ำเสมอภายใต้ null Btw, ขอแนะนำให้ทำแบบจำลองต่อการตั้งค่าจำนวนมากรวมถึงตัวเลือกของ n ไม่ใช่เพียงอย่างเดียวในรหัสของคุณ
Michael M

7

การทำความเข้าใจการวิเคราะห์พลังงานของการทดสอบสมมติฐานทางสถิติสามารถปรับปรุงได้ด้วยการดำเนินการบางอย่างและดูผลลัพธ์อย่างใกล้ชิด


โดยการออกแบบการทดสอบขนาด αมีวัตถุประสงค์เพื่อปฏิเสธสมมติฐานว่างด้วยโอกาสอย่างน้อยที่สุดαเมื่อ null เป็นจริง (ที่คาดว่าอัตราการบวกปลอม ) เมื่อเรามีความสามารถ (หรือความหรูหรา) ในการเลือกระหว่างขั้นตอนทางเลือกกับคุณสมบัตินี้เราจะชอบที่ (a) เข้ามาใกล้กับอัตราบวกปลอมเล็กน้อยและ (b) มีโอกาสค่อนข้างสูงที่จะปฏิเสธสมมติฐานว่างเมื่อมันเป็น ไม่จริง.

เกณฑ์ที่สองกำหนดให้เราต้องกำหนดในสิ่งที่และวิธีการที่เป็นโมฆะไม่เป็นความจริง ในกรณีของตำราเรียนสิ่งนี้เป็นเรื่องง่ายเพราะทางเลือกจะถูก จำกัด ในขอบเขตและระบุไว้อย่างชัดเจน ด้วยการทดสอบการกระจายเช่น Shapiro-Wilk ทางเลือกนั้นค่อนข้างคลุมเครือมากขึ้นนั่นคือ "ไม่ใช่แบบปกติ" เมื่อเลือกระหว่างการทดสอบแบบกระจายนักวิเคราะห์มีแนวโน้มที่จะต้องทำการศึกษาแบบใช้พลังงานครั้งเดียวเพื่อประเมินว่าการทดสอบแบบใดที่ทำงานได้ดีกับสมมติฐานทางเลือกที่เฉพาะเจาะจงมากขึ้นซึ่งเป็นปัญหาในมือ

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

ไม่ว่าในสถานการณ์ใด - ไม่ว่าจะเป็นการประเมินขนาดการทดสอบจริงหรือกำลัง - เราต้องสร้างตัวอย่างอิสระจากการแจกแจงที่ระบุรันการทดสอบในแต่ละตัวอย่างและค้นหาอัตราที่มันปฏิเสธสมมติฐานว่าง อย่างไรก็ตามมีข้อมูลเพิ่มเติมในผลการทดสอบใด ๆ : ค่า P โดยการคงชุดของค่า P ที่สร้างขึ้นในระหว่างการจำลองเราสามารถประเมินอัตราที่การทดสอบจะปฏิเสธค่า Null สำหรับค่าใด ๆของαเราอาจสนใจ หัวใจของการวิเคราะห์พลังงานนั้นเป็นรูทีนย่อยที่สร้างการกระจาย P-value นี้ (โดยการจำลองตามที่อธิบายไว้หรือ - บางครั้ง - ด้วยสูตรทางทฤษฎี) Rนี่คือตัวอย่างเขียนใน ข้อโต้แย้งของมันรวมถึง

  • rdistชื่อของฟังก์ชันเพื่อสร้างตัวอย่างสุ่มจากการแจกแจงบางอย่าง

  • nขนาดของตัวอย่างที่ต้องการ rdist

  • n.iterจำนวนตัวอย่างดังกล่าวที่จะได้รับ

  • ...พารามิเตอร์ทางเลือกใด ๆ ที่จะส่งผ่านไปยังrdist(เช่นดีกรีอิสระ)ν)

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

sim <- function(rdist, n, n.iter, prefix="",
                breaks=seq(0, 1, length.out=20), alpha=0.05,
                plot=TRUE, ...) {

  # The simulated P-values.
  # NB: The optional arguments "..." are passed to `rdist` to specify
  #     its parameters (if any).
  x <- apply(matrix(rdist(n*n.iter, ...), ncol=n.iter), 2, 
             function(y) shapiro.test(y)$p.value)

  # The histogram of P-values, if requested.
  if (plot) {
    power <- mean(x <= alpha)
    round.n <- 1+ceiling(log(1 + n.iter * power * (1-power), base=10) / 2)
    hist(x[x <= max(breaks)], xlab=paste("P value (n=", n, ")", sep=""), 
         breaks=breaks, 
         main=paste(prefix, "(power=", format(power, digits=round.n), ")", sep=""))
    # Specially color the "significant" part of the histogram
    hist(x[x <= alpha], breaks=breaks, col="#e0404080", add=TRUE)
  }

  # Return the array of P-values for any further processing.
  return(x)
}

คุณสามารถเห็นการคำนวณใช้เวลาเพียงหนึ่งบรรทัด ส่วนที่เหลือของรหัสจะแปลงฮิสโตแกรม เพื่อแสดงให้เห็นว่าใช้เพื่อคำนวณอัตราบวกที่เป็นเท็จที่คาดไว้ "อัตรา" อยู่ในพหูพจน์เนื่องจากคุณสมบัติของการทดสอบมักแตกต่างกันไปตามขนาดตัวอย่าง เนื่องจากเป็นที่ทราบกันดีว่าการทดสอบแบบกระจายมีพลังงานสูงเมื่อเทียบกับทางเลือกเล็ก ๆ ในเชิงคุณภาพเมื่อขนาดตัวอย่างมีขนาดใหญ่การศึกษานี้จึงมุ่งเน้นไปที่กลุ่มตัวอย่างขนาดเล็กจำนวนมากซึ่งการทดสอบดังกล่าวมักใช้ในทางปฏิบัติ5 ถึง 100 เพื่อประหยัดเวลาในการคำนวณฉันรายงานเฉพาะค่าของ n จาก 5 ถึง 20

n.iter <- 10^5                 # Number of samples to generate
n.spec <- c(5, 10, 20)         # Sample sizes to study
par(mfrow=c(1,length(n.spec))) # Organize subsequent plots into a tableau
system.time(
  invisible(sapply(n.spec, function(n) sim(rnorm, n, n.iter, prefix="DF = Inf ")))
)

หลังจากระบุพารามิเตอร์รหัสนี้ก็เป็นเพียงหนึ่งบรรทัด มันให้ผลลัพธ์ต่อไปนี้:

ฮิสโทแกรมสำหรับค่า Null

นี่คือลักษณะที่คาดไว้:ฮิสโทแกรมแสดงการกระจายของค่า P เกือบทั้งหมดในช่วงเต็มจาก0 ถึง 1. ด้วยขนาดที่ตั้งไว้ที่α=0.05, รายงานการจำลองระหว่าง 0.0481 และ 0.0499ของค่า P มีค่าน้อยกว่าขีด จำกัด นั้น: ผลลัพธ์เหล่านี้ถูกเน้นด้วยสีแดง ความใกล้ชิดของความถี่เหล่านี้กับค่าที่ระบุนั้นยืนยันว่าการทดสอบ Shapiro-Wilk ดำเนินการตามที่โฆษณาไว้

(ดูเหมือนจะมีแนวโน้มไปสู่ความถี่สูงผิดปกติของค่า P ใกล้ 1. นี่เป็นข้อกังวลเล็กน้อยเพราะในเกือบทุกแอปพลิเคชันค่า P เดียวที่มีอยู่0.2 หรือน้อยกว่า.)

ตอนนี้ให้เราหันมาประเมินพลังกัน ช่วงเต็มของค่าν สำหรับการแจกแจงของนักเรียน t สามารถศึกษาได้อย่างเพียงพอโดยการประเมินบางกรณีจากรอบ ν=100 ลงไป ν=1. ฉันจะรู้ได้อย่างไร ฉันดำเนินการเบื้องต้นบางอย่างโดยใช้การวนซ้ำจำนวนน้อยมาก (จาก100 ถึง 1000) ซึ่งไม่ต้องใช้เวลาเลย ตอนนี้โค้ดต้องการลูปสองเท่า (และในสถานการณ์ที่ซับซ้อนมากขึ้นเรามักต้องการลูปสามหรือสี่เท่าเพื่อรองรับทุกแง่มุมที่เราต้องการเปลี่ยนแปลง): หนึ่งเพื่อศึกษาว่าพลังงานแตกต่างกันอย่างไรกับขนาดตัวอย่างและอื่น ๆ เพื่อศึกษาว่ามันแตกต่างกันอย่างไร องศาอิสระ แม้ว่าอีกครั้งทุกอย่างจะทำในรหัสบรรทัดเดียว (ที่สามและสุดท้าย):

df.spec <- c(64, 16, 4, 2, 1)
par(mfrow=c(length(n.spec), length(df.spec)))
for (n in n.spec) 
  for (df in df.spec)
    tmp <- sim(rt, n, n.iter, prefix=paste("DF =", df, ""), df=df)

ฮิสโตแกรมสำหรับทางเลือกอื่น

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

  • ในฐานะที่เป็นองศาอิสระลดลงจาก ν=64 ทางซ้ายเพื่อ ν=1ทางด้านขวาค่า P-value มากขึ้นและน้อยแสดงให้เห็นว่าอำนาจในการแยกแยะการกระจายเหล่านี้จากการแจกแจงแบบปกติเพิ่มขึ้น (กำลังคำนวณปริมาณในชื่อพล็อตแต่ละเรื่อง: เท่ากับสัดส่วนของพื้นที่ของฮิสโตแกรมที่เป็นสีแดง)

  • เมื่อขนาดตัวอย่างเพิ่มขึ้นจาก n=5 ในแถวบนสุดถึง n=20 ด้านล่างพลังงานเพิ่มขึ้น

  • สังเกตว่าการกระจายทางเลือกนั้นแตกต่างจากการแจกแจงแบบโมฆะและขนาดตัวอย่างเพิ่มขึ้นอย่างไรค่า P เริ่มต้นรวบรวมไปทางซ้าย แต่ยังมี "หาง" ของมันที่ทอดยาวไปจนถึง 1. นี่คือลักษณะของการศึกษาพลังงาน มันแสดงให้เห็นว่าการทดสอบนั้นเป็นการเดิมพัน : แม้เมื่อสมมติฐานว่างถูกละเมิดอย่างเห็นได้ชัดและแม้ว่าขนาดตัวอย่างของเรามีขนาดใหญ่พอสมควรการทดสอบอย่างเป็นทางการของเราอาจล้มเหลวในการสร้างผลลัพธ์ที่สำคัญ

  • แม้ในกรณีที่รุนแรงที่ด้านล่างขวาซึ่งเป็นตัวอย่างของ 20 ถูกดึงมาจากการแจกจ่ายของนักเรียนด้วย 1 ระดับของอิสรภาพ (การกระจาย Cauchy) พลังไม่ได้ 1: มี 100-86.57=13% โอกาสที่กลุ่มตัวอย่าง 20 ตัวแปร iid Cauchy จะไม่ได้รับการพิจารณาอย่างแตกต่างจาก Normal ที่ระดับ 5% (นั่นคือด้วย 95% ความมั่นใจ).

  • เราสามารถประเมินพลังได้ทุกเมื่อ αเราเลือกโดยการระบายสีบาร์บนฮิสโทแกรมเหล่านี้ให้มากขึ้นหรือน้อยลง ตัวอย่างเช่นการประเมินพลังงานที่α=0.10สีในสองแท่งด้านซ้ายในแต่ละฮิสโตแกรมและประมาณพื้นที่ของมันเป็นเศษส่วนของผลรวม

    (วิธีนี้ใช้ไม่ได้ผลกับค่าของ α มีขนาดเล็กกว่า 0.05ด้วยตัวเลขนี้ ในทางปฏิบัติเราจะ จำกัด ฮิสโทแกรมเป็นค่า P เท่านั้นในช่วงที่จะใช้ซึ่งอาจมาจาก0 ถึง 20%และแสดงรายละเอียดให้เพียงพอเพื่อเปิดใช้การประเมินพลังงานแบบมองเห็นได้ α=0.01 หรือแม้กระทั่ง α=0.005. (นั่นคือสิ่งที่เป็นbreaksตัวเลือกsimสำหรับ) การโพสต์ผลการจำลองสามารถให้รายละเอียดได้มากขึ้น)


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


1

(มากกว่าความคิดเห็นอาจไม่ใช่คำตอบที่สมบูรณ์)

[I] คาดว่าเมื่อขนาดตัวอย่างเพิ่มความน่าจะเป็นในการปฏิเสธค่าลดลง

ออกจากการพิจารณาการทดสอบแบบลำเอียง (ซึ่งไม่ใช่เรื่องแปลกในเรื่องความดีพอดีดังนั้นจึงควรพูดถึง) มีสามสถานการณ์ที่เกี่ยวข้องกับอัตราการปฏิเสธที่เราอาจต้องการพิจารณา:

1) อัตราการปฏิเสธเมื่อจำลองจากโมฆะ (ตามที่คุณดูเหมือนจะทำในคำถามของคุณ)

ที่นี่อัตราการปฏิเสธควรอยู่ที่หรือใกล้ระดับความสำคัญดังนั้นไม่ถ้าคุณถือค่าคงที่ที่ระดับนัยสำคัญอัตราการปฏิเสธจะไม่ลดลงเมื่อเพิ่มขึ้นnแต่จะอยู่ที่ / ใกล้α.

2) อัตราการปฏิเสธเมื่อจำลองจากทางเลือกอื่น

อัตราการปฏิเสธจะเพิ่มขึ้นเมื่อnเพิ่มขึ้น

3) อัตราการปฏิเสธสำหรับการรวบรวมข้อมูลจริงบางอย่าง

จริงแล้วโมฆะไม่จริงจริงและข้อมูลจริงจะมีการผสมผสานของจำนวนที่ไม่เป็นปกติ (วัดจากสถิติการทดสอบ) หากระดับของความไม่ปกตินั้นไม่สัมพันธ์กับขนาดตัวอย่างอัตราการปฏิเสธควรเพิ่มขึ้นเมื่อnเพิ่มขึ้น

ดังนั้นในความเป็นจริงแล้วในสถานการณ์เหล่านี้เราไม่ควรเห็นว่าอัตราการปฏิเสธลดลงตามขนาดตัวอย่าง

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