การตั้งค่านอตในลูกบาศก์ลูกบาศก์ธรรมชาติใน R


23

ฉันมีข้อมูลที่มีฟีเจอร์ที่สัมพันธ์กันมากมายและฉันต้องการเริ่มต้นด้วยการลดฟีเจอร์ด้วยฟังก์ชั่นพื้นฐานที่ราบรื่นก่อนใช้ LDA ฉันพยายามใช้ลูกบาศก์ธรรมชาติในsplinesแพคเกจกับnsฟังก์ชัน ฉันจะไปเกี่ยวกับการกำหนดปมได้อย่างไร

นี่คือรหัส R พื้นฐาน:

library(splines)
lda.pred <- lda(y ~ ns(x, knots=5))

nsแต่ผมมีความคิดเกี่ยวกับวิธีการเลือกนอตไม่มี


3
คุณกำลังถามเกี่ยวกับวิธีการระบุปมใน (เช่นผ่านการขัดแย้งกับns ) หรือคุณกำลังถามเกี่ยวกับกลยุทธ์ในการตัดสินใจเลือกที่จะวางปม? R
พระคาร์ดินัล

1
ดู Harrell, Regression Strategies 2015 เพื่อการสนทนาที่ดีว่าจะวางเงื่อนแบบไหน (ไม่สำคัญดังนั้น quantiles ก็ดีพอ ๆ กับอะไรก็ได้ - ข้อยกเว้นคือถ้าคุณมีเหตุผลที่ดีที่เชื่อว่าพฤติกรรมเปลี่ยนแปลงไปในบางจุด) และ จำนวนนอต (3, 4, หรือ 5 ขึ้นอยู่กับ N)
statsguy

คำตอบ:


40

วิธีการระบุนอตใน R

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

library(splines)
lda.pred <- lda(y ~ ns(x, knots=5))

คุณยังไม่ได้ร้องขอห้า knots แต่ขอknot (ภายใน) เดียวที่ตำแหน่ง 5

ถ้าคุณใช้dfอาร์กิวเมนต์แล้วนอตภายในจะถูกเลือกขึ้นอยู่กับ quantiles xของเวกเตอร์ ตัวอย่างเช่นหากคุณโทรออก

ns(x, df=5)

จากนั้นพื้นฐานจะรวมสองนอตขอบเขตและ4นอตภายในวางไว้ที่ 20, 40, 60 และ 80 ของ quantiles ของxตามลำดับ xนอตเขตแดนโดยค่าเริ่มต้นจะอยู่ที่นาทีและสูงสุด

นี่คือตัวอย่างเพื่อระบุตำแหน่งของนอต

x <- 0:100
ns(x, knots=c(20,35,50))

หากคุณต้องโทรหาns(x, df=4)คุณจะได้รับปมภายใน 3 ตำแหน่งที่ตำแหน่ง 25, 50 และ 75 ตามลำดับ

นอกจากนี้คุณยังสามารถระบุว่าคุณต้องการคำดักจับหรือไม่ ปกติแล้วสิ่งนี้จะไม่ถูกระบุเนื่องจากnsมักใช้ร่วมกับlmซึ่งรวมถึงการสกัดกั้นโดยปริยาย (ยกเว้นกรณีที่ไม่บังคับ) หากคุณใช้intercept=TRUEในการโทรไปnsตรวจสอบให้แน่ใจว่าคุณรู้ว่าทำไมคุณถึงทำเช่นนั้นเพราะถ้าคุณทำสิ่งนี้แล้วโทรไปlmอย่างไร้เดียงสาเมทริกซ์การออกแบบจะจบลงด้วยการขาดอันดับ

กลยุทธ์ในการวางนอต

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

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

ในแง่ของการตีความการถดถอยฉันจะทราบว่าในขณะที่คุณสามารถ "เล่นรอบ" กับตำแหน่งปมได้อย่างแน่นอนคุณควรตระหนักว่าคุณได้รับโทษจากการเลือกรูปแบบสำหรับสิ่งนี้ซึ่งคุณควรระมัดระวังในการประเมินและควรปรับการอนุมานใด ๆ ผล.


กำหนดx <- 0:100วิธีที่ "เหมาะสม" ในการกำหนดเบรกพอยต์คือการทำknots_x <- quantile(x, probs=c(.2, .35, .5))ซึ่งจะถูกนำมาใช้ในns(x, knots=knots_x)การกำหนด 3 นอตภายในที่ตั้ง 25, 50 และ 75 ตามลำดับ สิ่งที่ทำให้ฉันสับสนในคำตอบคือฉันคาดหวังว่าจะต้องระบุจำนวนที่ต้องการในการknotsโต้แย้งในขณะที่ฉันต้องป้อนค่าที่แท้จริงจากxเวกเตอร์ ...
Landroni

การวิเคราะห์การสำรวจสุขภาพโดย Edward L. Korn, Barry I. Graubard p.98 ระบุว่า Durrleman และ Simon (1989) แนะนำ (0.05,0.50,0.95) สำหรับ Splines ธรรมชาติ
Chris
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.