ฉันต้องการทำสิ่งต่อไปนี้:
1) การถดถอย OLS (ไม่มีเงื่อนไขการลงโทษ) เพื่อรับค่าสัมประสิทธิ์เบต้า ; หมายถึงตัวแปรที่ใช้ในการถดถอย ฉันทำสิ่งนี้ด้วย
lm.model = lm(y~ 0 + x)
betas = coefficients(lm.model)
2) การถดถอยของ Lasso ที่มีเงื่อนไขการลงโทษเกณฑ์การคัดเลือกจะต้องเป็นเกณฑ์ข้อมูล Bayesian (BIC) ที่กำหนดโดย
โดยที่หมายถึงหมายเลขตัวแปร / regressor,สำหรับจำนวนการสังเกตและสำหรับ betas เริ่มต้นที่ได้รับในขั้นตอนที่ 1) ฉันต้องการให้ผลลัพธ์การถดถอยสำหรับค่าเฉพาะเจาะจงซึ่งแตกต่างกันสำหรับ regressor แต่ละตัวที่ใช้ ดังนั้นถ้ามีสามตัวแปรจะมีสามค่าที่แตกต่างกัน\
จากนั้นปัญหาการปรับให้เหมาะสมของ OLS-Lasso
ฉันจะทำสิ่งนี้ใน R ด้วยแพ็คเกจ lars หรือ glmnet ได้อย่างไร? ฉันไม่สามารถหาวิธีระบุแลมบ์ดาได้และฉันไม่แน่ใจ 100% ถ้าฉันได้ผลลัพธ์ที่ถูกต้องถ้าฉันวิ่ง
lars.model <- lars(x,y,type = "lasso", intercept = FALSE)
predict.lars(lars.model, type="coefficients", mode="lambda")
ฉันขอขอบคุณความช่วยเหลือที่นี่
ปรับปรุง:
ฉันได้ใช้รหัสต่อไปนี้แล้ว:
fits.cv = cv.glmnet(x,y,type="mse",penalty.factor = pnlty)
lmin = as.numeric(fits.cv[9]) #lambda.min
fits = glmnet(x,y, alpha=1, intercept=FALSE, penalty.factor = pnlty)
coef = coef(fits, s = lmin)
ในบรรทัดที่ 1 ฉันใช้การตรวจสอบไขว้กับปัจจัยการลงโทษที่ระบุของฉัน ( ) ซึ่งแตกต่างกันสำหรับ regressor แต่ละตัว . บรรทัดที่ 2 เลือก "lambda.min" ของ fits.cv ซึ่งเป็น lambda ที่ให้ข้อผิดพลาดการตรวจสอบความถูกต้องข้ามขั้นต่ำ บรรทัดที่ 3 ใช้ข้อมูลแบบ lasso fit ( ) อีกครั้งผมใช้ปัจจัยโทษ\บรรทัดที่ 4 แยกค่าสัมประสิทธิ์จากความพอดีซึ่งเป็นของ "ดีที่สุด"เลือกในบรรทัดที่ 2λλalpha=1
ตอนนี้ฉันมีค่าสัมประสิทธิ์เบต้าสำหรับ regressors ซึ่งแสดงวิธีแก้ปัญหาที่ดีที่สุดของปัญหาการย่อขนาด
ด้วยปัจจัยการลงโทษ|} ค่าสัมประสิทธิ์ที่เหมาะสมที่สุดน่าจะเป็นเซตย่อยของ regressors ที่ฉันใช้ในตอนแรกนี่เป็นผลมาจากวิธี Lasso ที่ลดจำนวน regressors ที่ใช้ลงไป
ความเข้าใจของฉันและรหัสถูกต้องหรือไม่
$\alpha$
กลายเป็น\โปรดทำสิ่งนี้เนื่องจากจะทำให้ผู้คนสามารถเข้าใจคำถามของคุณได้ง่ายขึ้นและตอบคำถาม