ฉันกำลังพยายามปรับตัวแบบการถดถอยเชิงเส้นหลายตัวแปรที่มีตัวแปรทำนาย 60 ตัวและการสังเกต 30 ครั้งดังนั้นฉันจึงใช้แพ็คเกจglmnetสำหรับการถดถอยแบบปกติเพราะ p> n
ฉันได้อ่านเอกสารและคำถามอื่น ๆ แล้ว แต่ฉันก็ยังไม่สามารถตีความผลลัพธ์ได้นี่คือตัวอย่างโค้ด (ที่มีตัวทำนาย 20 ตัวและตัวสังเกต 10 ข้อเพื่อลดความซับซ้อน):
ฉันสร้างเมทริกซ์ x พร้อมแถว num = การสังเกต num และ num cols = ตัวทำนาย NUM และเวกเตอร์ y ซึ่งแสดงถึงตัวแปรตอบสนอง
> x=matrix(rnorm(10*20),10,20)
> y=rnorm(10)
ฉันพอดีกับรูปแบบ glmnet ที่ปล่อยให้อัลฟาเป็นค่าเริ่มต้น (= 1 สำหรับการลงโทษบ่วงบาศ)
> fit1=glmnet(x,y)
> print(fit1)
ฉันเข้าใจว่าฉันได้รับการทำนายที่แตกต่างจากการลดค่าแลมบ์ดา (เช่นการลงโทษ)
Call: glmnet(x = x, y = y)
Df %Dev Lambda
[1,] 0 0.00000 0.890700
[2,] 1 0.06159 0.850200
[3,] 1 0.11770 0.811500
[4,] 1 0.16880 0.774600
.
.
.
[96,] 10 0.99740 0.010730
[97,] 10 0.99760 0.010240
[98,] 10 0.99780 0.009775
[99,] 10 0.99800 0.009331
[100,] 10 0.99820 0.008907
ตอนนี้ฉันคาดการณ์ว่าจะเลือกค่าเบต้าตัวอย่างเช่นค่าแลมบ์ดาที่เล็กที่สุดที่ได้รับ glmnet
> predict(fit1,type="coef", s = 0.008907)
21 x 1 sparse Matrix of class "dgCMatrix"
1
(Intercept) -0.08872364
V1 0.23734885
V2 -0.35472137
V3 -0.08088463
V4 .
V5 .
V6 .
V7 0.31127123
V8 .
V9 .
V10 .
V11 0.10636867
V12 .
V13 -0.20328200
V14 -0.77717745
V15 .
V16 -0.25924281
V17 .
V18 .
V19 -0.57989929
V20 -0.22522859
ถ้าฉันเลือกแลมบ์ดาด้วย
cv <- cv.glmnet(x,y)
model=glmnet(x,y,lambda=cv$lambda.min)
ตัวแปรทั้งหมดจะเป็น (.)
สงสัยและคำถาม:
- ฉันไม่แน่ใจเกี่ยวกับวิธีเลือกแลมบ์ดา
- ฉันควรใช้ตัวแปรที่ไม่ใช่ (.) เพื่อให้พอดีกับโมเดลอื่นหรือไม่ ในกรณีของฉันฉันต้องการเก็บตัวแปรให้มากที่สุด
- ฉันจะรู้ค่า p ได้อย่างไรเช่นตัวแปรใดทำนายการตอบสนองได้อย่างมีนัยสำคัญ
ฉันขอโทษสำหรับความรู้ทางสถิติที่ไม่ดีของฉัน! และขอขอบคุณสำหรับความช่วยเหลือ