วิธีการจำลองการกระจายตัวที่มีรูปร่างแปลก ๆ นี้ (เกือบจะเป็น reverse-J)


25

ตัวแปรตามของฉันที่แสดงด้านล่างไม่ตรงกับการกระจายหุ้นใด ๆ ที่ฉันรู้ การถดถอยเชิงเส้นทำให้เกิดการตกค้างที่ไม่ปกติและเอียงไปทางขวาซึ่งสัมพันธ์กับการทำนาย Y ในวิธีที่แปลก (พล็อตที่ 2) คำแนะนำสำหรับการเปลี่ยนแปลงหรือวิธีอื่น ๆ เพื่อให้ได้ผลลัพธ์ที่ถูกต้องที่สุดและแม่นยำที่สุดในการคาดการณ์? หากเป็นไปได้ฉันต้องการหลีกเลี่ยงการจัดหมวดหมู่ที่เงอะงะพูดว่า 5 ค่า (เช่น 0, lo%, med%, hi%, 1)

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่


7
คุณจะดีกว่าบอกเราเกี่ยวกับข้อมูลเหล่านี้และที่พวกเขามาจาก: สิ่งที่มีการจับยึดการแจกจ่ายที่ธรรมชาติขยายเกินช่วงเวลา เป็นไปได้ที่คุณจะใช้วิธีการวัดหรือกระบวนการทางสถิติที่ไม่เหมาะสมกับข้อมูลของคุณ การพยายามแก้ไขข้อผิดพลาดดังกล่าวด้วยเทคนิคการกระจายข้อต่อที่มีความซับซ้อนการแสดงออกที่ไม่เชิงเส้นการใช้ binning ฯลฯ จะทำให้เกิดข้อผิดพลาดดังนั้นจึงเป็นการดีที่จะหลีกเลี่ยงปัญหาทั้งหมด [0,1]
whuber

2
@whuber - ความคิดที่ดี แต่ตัวแปรถูกสร้างขึ้นผ่านระบบราชการที่ซับซ้อนซึ่งเป็นที่น่าเสียดายในหิน ฉันไม่มีอิสระที่จะเปิดเผยลักษณะของตัวแปรที่เกี่ยวข้องที่นี่
rolando2

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

ลองใช้การแจกแจงแบบเบต้าด้วยพารามิเตอร์ที่เล็กกว่าเอกภาพen.wikipedia.org/wiki/File:Beta_distribution_pdf.svg
Alecos Papadopoulos

2
การกระจายตัวของอ่างอาบน้ำหรือรูปตัวยูนี้เป็นเรื่องปกติในผู้อ่านนิตยสารซึ่งหลายคนจะอ่านสิ่งพิมพ์ฉบับเดียวเช่นในสำนักงานแพทย์หรืออื่น ๆ เป็นสมาชิกที่เห็นปัญหาทุกเรื่องโดยการอ่านจากผู้อ่าน ความคิดเห็นและคำตอบมากมายชี้ไปที่การแจกแจงเบต้าว่าเป็นทางออกเดียวที่เป็นไปได้ วรรณกรรมที่ฉันคุ้นเคยกับการชี้ไปที่เบต้า - ทวินามว่าเป็นทางเลือกที่เหมาะสมกว่า
Mike Hunter

คำตอบ:


47

วิธีการตรวจสอบการถดถอยสามารถจัดการข้อมูลเช่นนี้ พวกเขาถือว่าส่วนที่เหลือมีพฤติกรรมเหมือนกับการถดถอยเชิงเส้นปกติ แต่ได้รับการแก้ไขเพื่อให้

  1. (การเซ็นเซอร์ด้านซ้าย): ค่าทั้งหมดเล็กกว่าขีด จำกัด ต่ำซึ่งไม่ขึ้นอยู่กับข้อมูล (แต่อาจแตกต่างจากกรณีหนึ่งไปอีกกรณีหนึ่ง) ยังไม่ได้รับการนับจำนวน และ / หรือ

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

"ไม่ใช่ปริมาณ" หมายความว่าเรารู้ว่าค่าต่ำกว่า (หรือสูงกว่า) เกณฑ์ของมันหรือไม่แต่นั่นคือทั้งหมด

วิธีการที่เหมาะสมมักจะใช้โอกาสสูงสุด เมื่อแบบจำลองสำหรับการตอบสนองสอดคล้องกับเวกเตอร์Xอยู่ในรูปแบบYX

YXβ+ε

กับ iid มีการแจกแจงทั่วไปF σด้วย PDF f σεFσfσ (ซึ่งไม่เป็นที่รู้จัก "พารามิเตอร์สร้างความรำคาญ") จากนั้น - ในกรณีที่ไม่มีการเซ็นเซอร์ - บันทึกความน่าจะเป็นของการสังเกต( x i , y i )คือσ(xi,yi)

Λ=i=1nlogfσ(yixiβ).

ด้วยการเซ็นเซอร์ในปัจจุบันเราอาจแบ่งกรณีออกเป็นสามคลาส (อาจว่างเปล่า): สำหรับดัชนีถึงn 1 , y iมีค่าเกณฑ์ที่ต่ำกว่าและเป็นตัวแทนของข้อมูลเซ็นเซอร์ด้านซ้าย ; สำหรับดัชนีฉัน= n 1 + 1เพื่อn 2ที่Y ฉันจะวัด; และสำหรับดัชนีที่เหลืออยู่y iมีค่าขีด จำกัด บนและแสดงการเซ็นเซอร์ที่ถูกต้องi=1n1yii=n1+1n2yiyiข้อมูล. โอกาสในการบันทึกจะได้รับในลักษณะเดียวกับก่อนหน้านี้: มันเป็นบันทึกของผลิตภัณฑ์ของความน่าจะเป็น

Λ=i=1n1logFσ(yixiβ)+i=n1+1n2logfσ(yixiβ)+i=n2+1nlog(1Fσ(yixiβ)).

นี้เป็น maximized ตัวเลขเป็นหน้าที่ของ )(β,σ)

จากประสบการณ์ของฉันวิธีการดังกล่าวสามารถทำงานได้ดีเมื่อมีการเซ็นเซอร์ข้อมูลน้อยกว่าครึ่ง มิฉะนั้นผลลัพธ์อาจไม่เสถียร


นี่คือRตัวอย่างง่ายๆที่ใช้censRegแพคเกจเพื่อแสดงให้เห็นว่า OLS และผลลัพธ์การเซ็นเซอร์สามารถแตกต่างกัน (มาก) แม้มีข้อมูลมากมาย มันทำซ้ำข้อมูลคุณภาพในคำถาม

library("censReg")
set.seed(17)
n.data <- 2960
coeff  <- c(-0.001, 0.005)
sigma  <- 0.005
x      <- rnorm(n.data, 0.5)
y      <- as.vector(coeff %*% rbind(rep(1, n.data), x) + rnorm(n.data, 0, sigma))
y.cen           <- y
y.cen[y < 0]    <- 0
y.cen[y > 0.01] <- 0.01
data = data.frame(list(x, y.cen))

สิ่งที่สำคัญในการแจ้งให้ทราบล่วงหน้าเป็นพารามิเตอร์ที่: ความจริงความลาดชันเป็นที่จริงตัดเป็น- 0.001และจริง SD ข้อผิดพลาดคือ0.0050.0050.0010.005

ลองใช้ทั้งสองlmและcensRegเพื่อให้พอดีกับบรรทัด:

fit <- censReg(y.cen ~ x, data=data, left=0.0, right=0.01)
summary(fit)

ผลของการถดถอยเซ็นเซอร์นี้ได้รับจากการprint(fit)เป็น

(Intercept)           x       sigma 
  -0.001028    0.004935    0.004856 

สิ่งเหล่านี้ใกล้เคียงกับค่าที่ถูกต้องของ0.0010.0050.005

fit.OLS <- lm(y.cen ~ x, data=data)
summary(fit.OLS)

พอดีกับ OLS ที่กำหนดโดยprint(fit.OLS)เป็น

(Intercept)            x  
   0.001996     0.002345  

summary0.002864

สำหรับการเปรียบเทียบขอ จำกัด การถดถอยให้กับข้อมูลเชิงปริมาณ:

fit.part <- lm(y[0 <= y & y <= 0.01] ~ x[0 <= y & y <= 0.01])
summary(fit.part)

(Intercept)  x[0 <= y & y <= 0.01]  
   0.003240               0.001461  

ยิ่งเลวร้ายลง!

ภาพไม่กี่ภาพสรุปสถานการณ์

lineplot <- function() {
  abline(coef(fit)[1:2], col="Red", lwd=2)
  abline(coef(fit.OLS), col="Blue", lty=2, lwd=2)
  abline(coef(fit.part), col=rgb(.2, .6, .2), lty=3, lwd=2)
}
par(mfrow=c(1,4))
plot(x,y, pch=19, cex=0.5, col="Gray", main="Hypothetical Data")
lineplot()
plot(x,y.cen, pch=19, cex=0.5, col="Gray", main="Censored Data")
lineplot()
hist(y.cen, breaks=50, main="Censored Data")
hist(y[0 <= y & y <= 0.01], breaks=50, main="Quantified Data")

พล็อต

00.01

Y0.00320.0037


คำตอบที่ดี (+1) ถ้าเราจะลบ spkies การตรวจสอบทั้งสองออกจากสายตาดูเหมือนว่าสำหรับฉันแล้วตัวแปรตามนั้นมีบางสิ่งที่ใกล้เคียงกับการแจกแจงแบบเอ็กซ์โพเนนเชียลราวกับว่าข้อมูลพื้นฐานนั้นมีความยาวของกระบวนการบางอย่าง นี่เป็นสิ่งที่ต้องคำนึงถึงหรือไม่?
user603

@ user603 ฉันจำลองค่าเชิงปริมาณด้วยส่วนหนึ่งของต้นแขนของ Gaussian ที่จริงแล้ว :-) เราต้องดูแลที่นี่เพราะรูปแบบความน่าจะเป็นที่เกี่ยวข้องเกี่ยวข้องกับส่วนที่เหลือและไม่ตอบสนองต่อตัวแปรการตอบสนอง แม้ว่ามันจะยุ่งยากเล็กน้อย แต่ก็สามารถตรวจสอบแปลงที่เหลือและแม้แต่แปลงความน่าจะเป็นที่ตรวจสอบได้เพื่อประเมินความเหมาะสมของการแจกแจงตามสมมติฐาน
whuber

จุดของฉันคือการที่มีเซ็นเซอร์ทวีคูณเสียน histogram ของเขาค่าวาบควรจะค่อนข้างแบน แต่พวกเขาดูเหมือนจะลดลงเบา ๆ ในขณะที่เราย้ายออกไปจาก 0.
user603

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

2
ฉันลองตรวจสอบการถดถอยของชุดข้อมูลของฉันและผลลัพธ์ที่ได้จะดีกว่าผลที่ได้จาก OLS นอกจากนี้ชุดเครื่องมือของฉัน - ขอบคุณ
rolando2

9

ค่าอยู่ระหว่าง 0 ถึง 1 เสมอหรือไม่

ถ้าเป็นเช่นนั้นคุณอาจพิจารณาการกระจายเบต้าและการถดถอยเบต้า

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

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


2
01

ใช่อยู่ในช่วง 0% ถึง 1% เสมอ ... และเดือยเหล่านี้แน่นอนที่ 0% และ 1% โมเดลที่มีค่าศูนย์ - หรือ - ศูนย์และหนึ่งขยายตัวสามารถใช้กับข้อมูลที่ไม่นับเช่นนี้ได้หรือไม่?
rolando2

1
มีค่าปกติที่สูงเกินศูนย์ แต่ไม่สามารถใช้ได้ที่นี่
Peter Flom - Reinstate Monica

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

4

สอดคล้องกับคำแนะนำของ Greg Snowฉันเคยได้ยินรุ่นเบต้ามีประโยชน์ในสถานการณ์เช่นนี้เช่นกัน (ดู Smithson & verkuilen, 2006, A Better Lemon Squeezer ), รวมถึงการถดถอยเชิงปริมาณ ( Bottai et al., 2010 ) แต่สิ่งเหล่านี้ ดูเหมือนว่าผลกระทบพื้นและเพดานที่เด่นชัดพวกเขาอาจไม่เหมาะสม (โดยเฉพาะอย่างยิ่งการถดถอยเบต้า)

อีกทางเลือกหนึ่งคือพิจารณาประเภทของแบบจำลองการถดถอยที่ถูกเซ็นเซอร์โดยเฉพาะอย่างยิ่งTobit Modelซึ่งเราพิจารณาผลลัพธ์ที่สังเกตได้ที่จะสร้างขึ้นโดยตัวแปรแฝงที่แฝงอยู่ซึ่งเป็นแบบต่อเนื่อง (และอาจเป็นเรื่องปกติ) ฉันจะไม่พูดแบบจำลองพื้นฐานที่ต่อเนื่องนี้มีความสมเหตุสมผลเนื่องจากฮิสโตแกรมของคุณ แต่คุณสามารถหาการสนับสนุนได้เมื่อคุณเห็นการแจกแจง (ไม่สนใจพื้น) มีความหนาแน่นสูงกว่าที่ค่าต่ำกว่าของเครื่องมือและค่อยๆลดลงไปสูงขึ้น ค่า

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

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