การทำนายความแปรปรวนของข้อมูล heteroscedastic


15

ฉันพยายามทำการถดถอยกับข้อมูลแบบเฮเทอโรเซสติกซึ่งฉันพยายามทำนายความแปรปรวนข้อผิดพลาดรวมถึงค่าเฉลี่ยในแง่ของตัวแบบเชิงเส้น บางสิ่งเช่นนี้

y(x,t)=y¯(x,t)+ξ(x,t),ξ(x,t)N(0,σ(x,t)),y¯(x,t)=y0+ax+bt,σ(x,t)=σ0+cx+dt.

ในคำพูดของข้อมูลที่ประกอบด้วยวัดซ้ำของที่ค่าต่างๆของxและเสื้อ ฉันถือว่าการวัดเหล่านี้ประกอบด้วยค่า "จริง" หมายถึงค่าˉ y ( x , t )ซึ่งเป็นฟังก์ชันเชิงเส้นของxและtพร้อมกับเสียงเกาส์แบบเติมadd ( x , t )ซึ่งค่าเบี่ยงเบนมาตรฐาน (หรือความแปรปรวนฉันไม่ได้ ตัดสินใจ) นอกจากนี้ยังขึ้นอยู่กับเส้นตรงกับx ,เสื้อ (ฉันอาจอนุญาตการพึ่งพาที่ซับซ้อนมากขึ้นในxและy(x,t)xty¯(x,t)xtξ(x,t)x,เสื้อx - ไม่มีแรงกระตุ้นเชิงทฤษฎีที่แข็งแกร่งสำหรับรูปแบบเชิงเส้น - แต่ฉันไม่อยากจะเข้าใจสิ่งต่าง ๆ ในตอนนี้)t

ฉันรู้ว่าคำค้นหาที่นี่คือ "heteroscedasticity" แต่ทั้งหมดที่ฉันสามารถค้นหาได้คือการอภิปรายเกี่ยวกับวิธีการลด / ลบคำศัพท์เพื่อทำนายดีขึ้นแต่ไม่มีอะไรในแง่ของการพยายามทำนายσในแง่ของ ตัวแปรอิสระ. ฉันต้องการประมาณy 0 , a , b , σ 0 , cและdด้วยช่วงความเชื่อมั่น (หรือ Bayesian เทียบเท่า) และถ้ามีวิธีง่าย ๆ ที่จะทำได้ใน SPSS ดีกว่ามาก! ฉันควรทำอย่างไรดี? ขอบคุณy¯ σy0,a,b,σ0,cd


ดูคำถามที่เกี่ยวข้องนี้สำหรับการอ้างอิงความแปรปรวนเป็นฟังก์ชั่นของพารามิเตอร์
Andy W

คุณลอง GARCH แล้วหรือยัง
Aksakal

โมเดลเชิงเส้นทั่วไปเป็นสาขาที่จัดการกับปัญหาของคุณ มีหนังสือชื่อเดียวกันแนะนำมาก
Diego

คำตอบ:


1

ผมคิดว่าปัญหาครั้งแรกของคุณคือการที่ไม่ได้อีกต่อไปการกระจายปกติและวิธีการตอบสนองความต้องการข้อมูลที่จะแปรสภาพเป็น homoscedastic ขึ้นอยู่กับสิ่งที่σ ( x , T )คือ ตัวอย่างเช่นถ้าσ ( x , t ) = a x + b tข้อผิดพลาดคือประเภทที่เป็นสัดส่วนและลอการิทึมของข้อมูล y ควรถูกนำมาใช้ก่อนการถดถอยหรือการถดถอยปรับจากสี่เหลี่ยมน้อยที่สุดธรรมดา (OLS) เป็นถ่วงน้ำหนัก กำลังสองน้อยที่สุดด้วย1N(0,σ(x,t))σ(x,t)σ(x,t)=ax+btน้ำหนัก (ที่เปลี่ยนการถดถอยเพื่อลดข้อผิดพลาดประเภทสัดส่วน) ในทำนองเดียวกันถ้า σ ( x , t ) = e a x + b tเราจะต้องใช้ลอการิทึมของลอการิทึมและถอยกลับไป1/y2σ(x,t)=eax+bt

ฉันคิดว่าเหตุผลที่การคาดการณ์ชนิดข้อผิดพลาดได้รับการคุ้มครองไม่ดีคือสิ่งแรกคือการถดถอยแบบเก่า ๆ และจากพล็อตที่เหลือนั่นคือคนหนึ่งสังเกตรูปร่างที่ตกค้างและหนึ่งกราฟฮิสโตแกรมความถี่ของข้อมูลและพล็อตกราฟ จากนั้นหากส่วนที่เหลือเป็นลำแสงพัดลมเปิดทางด้านขวาคนหนึ่งพยายามสร้างแบบจำลองข้อมูลตามสัดส่วนถ้าฮิสโตแกรมดูเหมือนการสลายตัวแบบเอกซ์โปเนนเชียลเราอาจลองตอบกลับแบบ1 / yและอื่น ๆ สำหรับรากที่สอง ชี้แจงการ -ymodely1/y

ตอนนี้เป็นเพียงเรื่องสั้น เวอร์ชันที่ยาวขึ้นรวมถึงประเภทของการถดถอยที่น่ากลัวอีกมากมายรวมถึงการถดถอยแบบ Theil median การ Deming bivariate regression และการถดถอยเพื่อลดข้อผิดพลาดของปัญหาที่ไม่ถูกต้องซึ่งไม่มีความสัมพันธ์ที่ดี อันสุดท้ายคือสิ่งที่ใหญ่โต แต่ดูนี่สิตัวอย่างเช่น. ดังนั้นมันจึงสร้างความแตกต่างอย่างมากกับสิ่งที่คำตอบหนึ่งพยายามจะได้รับ โดยทั่วไปหากต้องการสร้างความสัมพันธ์ระหว่างตัวแปร OLS ประจำไม่ใช่วิธีการเลือกและการถดถอยของ Theil จะเป็นการปรับปรุงอย่างรวดเร็วและสกปรก OLS จะย่อเล็กสุดในทิศทาง y เท่านั้นดังนั้นความชันนั้นตื้นเกินไปและการสกัดกั้นมีขนาดใหญ่เกินไปที่จะสร้างความสัมพันธ์ที่ซ่อนอยู่ระหว่างตัวแปร ในการพูดแบบนี้อีกวิธีหนึ่ง OLS ให้การประมาณค่าความผิดพลาดน้อยที่สุดของ ay เนื่องจาก x ไม่ให้การประมาณว่า x เปลี่ยนแปลงด้วย y อย่างไร เมื่อค่า r สูงมาก (0.99999+) จะทำให้เกิดความแตกต่างเล็กน้อยกับการถดถอยที่ใช้และ OLS ใน y นั้นใกล้เคียงกับ OLS ใน x แต่เมื่อ r-values ​​ต่ำ OLS ใน y นั้นแตกต่างจาก OLS ใน x

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


0

คำสั่งส่วนขยาย STATS BREUSCH PAGAN สามารถทดสอบทั้งส่วนที่เหลือสำหรับความแตกต่างแบบ heteroscedasticity และประเมินว่าเป็นฟังก์ชันของ regressors บางส่วนหรือทั้งหมด


0

วิธีการทั่วไปในการแก้ไขปัญหาประเภทนี้คือการเพิ่มความน่าจะเป็นของข้อมูลของคุณ

LL(Y0,a,,σ0,,d)=Σผม=1nเข้าสู่ระบบφ(Yผม,Y0+axผม+เสื้อผม,σ0+xผม+dเสื้อผม)
φ(x,μ,σ)=12πσอี-(x-μ)22σ2

θ^θ=(Y0,a,,σ0,,d)

Hθnθ^H-1

นี่คือตัวอย่างรหัสใน Python:

import scipy
import numpy as np

# generate toy data for the problem
np.random.seed(1) # fix random seed
n = 1000 # fix problem size
x = np.random.normal(size=n)
t = np.random.normal(size=n)
mean = 1 + x * 2 + t * 3
std = 4 + x * 0.5 + t * 0.6
y = np.random.normal(size=n, loc=mean, scale=std)

# create negative log likelihood
def neg_log_lik(theta):
    est_mean = theta[0] + x * theta[1] + t * theta[2]
    est_std = np.maximum(theta[3] + x * theta[4] + t * theta[5], 1e-10)
    return -sum(scipy.stats.norm.logpdf(y, loc=est_mean, scale=est_std))

# maximize
initial = np.array([0,0,0,1,0,0])
result = scipy.optimize.minimize(neg_log_lik, initial)
# extract point estimation
param = result.x
print(param)
# extract standard error for confidence intervals
std_error = np.sqrt(np.diag(result.hess_inv))
print(std_error)

σσ10-10

ผลลัพธ์ (การประมาณพารามิเตอร์และข้อผิดพลาดมาตรฐาน) ที่ผลิตโดยรหัสคือ:

[ 0.8724218   1.75510897  2.87661843  3.88917283  0.63696726  0.5788625 ]
[ 0.15073344  0.07351353  0.09515104  0.08086239  0.08422978  0.0853192 ]

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

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