ฉันจะค้นหา p-value ของการถดถอยแบบอิสระ


10

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

x <- rnorm(1000)
y <- sin(x) + rnorm(1000, 0, 0.5)

cor.test(x,y)
plot(x, y, xlab = xlab, ylab = ylab)
spl1 <- smooth.spline(x, y, tol = 1e-6, df = 8)
lines(spl1, col = "green", lwd = 2)

spl2 <- loess(y ~ x)
x.pr <- seq(min(x), max(x), length.out = 100)
lines(x.pr, predict(spl2, x.pr), col = "blue", lwd = 2)

คำตอบ:


8

ไลบรารี splines มีฟังก์ชั่นbsและnsที่จะสร้างพื้นฐานอิสระเพื่อใช้กับlmฟังก์ชั่นจากนั้นคุณสามารถใส่โมเดลเชิงเส้นและโมเดลรวมถึง Splines และใช้anovaฟังก์ชั่นเพื่อทำการทดสอบแบบจำลองทั้งหมดและลดลงเพื่อดูว่า กว่าโมเดลเชิงเส้น

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

x <- rnorm(1000)
y <- sin(x) + rnorm(1000, 0, 0.5)

library(splines)

fit1 <- lm(y~x)
fit0 <- lm(y~1)
fit2 <- lm(y~bs(x,5))

anova(fit1,fit2)
anova(fit0,fit2)

plot(x,y, pch='.')
abline(fit1, col='red')
xx <- seq(min(x),max(x), length.out=250)
yy <- predict(fit2, data.frame(x=xx))
lines(xx,yy, col='blue')

นอกจากนี้คุณยังสามารถใช้polyฟังก์ชั่นเพื่อทำการทดสอบพอดีกับพหุนามและทดสอบคำที่ไม่เป็นเชิงเส้นเป็นการทดสอบความโค้ง

R2

มีเทคนิคในการคำนวณและพล็อตช่วงความมั่นใจสำหรับแบบเหลือง (ฉันคิดว่าอาจมีวิธีในตัวในแพ็คเกจ ggplot2) คุณสามารถลงจุดความเชื่อมั่นและดูว่าเส้นตรงจะพอดีกับวงหรือไม่ ไม่ใช่ค่า p แต่ยังคงให้ใช่ / ไม่ใช่

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

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


ขอบคุณ Greg! ฉันคิดว่าย่อหน้าที่ 1 ดูเหมือนเป็นวิธีที่จะไปยกเว้นว่าฉันไม่สนใจที่จะเปรียบเทียบกับตัวแบบเชิงเส้นเพื่อดูว่าเส้นโค้งอธิบายหรือไม่ คุณช่วยระบุรหัสหรือตัวชี้ที่เป็นรูปธรรมเกี่ยวกับวิธีทดสอบ spline กับ anova ได้ไหม ฉันได้ดูฟังก์ชั่น bs และ ns แล้ว แต่ฉันไม่ค่อยเก่งในด้านสถิติที่จะสามารถคิดค้นมันเองได้
อยากรู้อยากเห็น

R2R2

anovaR2R21R2R21R2

เกร็กขอบคุณ! 1) คุณช่วยอธิบายสิ่งที่กำลังlm(y~bs(x,5))ทำอยู่และทำไมมันไม่ได้lm(y~I(bs(x,5)))? ฉันค่อนข้างสับสนจากการโทรนี้เนื่องจากผลลัพธ์ของ bs (x, 5) ไม่ใช่ตัวแปร ... 2) ฉันเข้าใจอย่างถูกต้องหรือไม่ว่าค่า p ที่ฉันกำลังค้นหาเป็นผลมาจากanova(fit0,fit2)อะไร
อยากรู้อยากเห็น

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