เป็นไปได้ใน R (หรือโดยทั่วไป) เพื่อบังคับให้สัมประสิทธิ์การถดถอยเป็นสัญญาณที่แน่นอน?


10

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

มีวิธีการบังคับให้ลงชื่อเฉพาะสำหรับแต่ละสัมประสิทธิ์การถดถอยหรือไม่? รหัส R ใด ๆ ในการทำเช่นนี้ก็จะได้รับการชื่นชมเช่นกัน

ขอบคุณสำหรับความช่วยเหลือใด ๆ !


9
ดูstat.columbia.edu/~gelman/stuff_for_blog/...
Dimitriy V. Masterov

1
อาจเกี่ยวข้องกันที่นี่

ลิงค์นี้r-bloggers.com/positive-coefficient-regression-in-rฉันเชื่อว่าคำตอบ @ คำถามของ JRW เกี่ยวกับค่า R-squared ตามที่แสดงความคิดเห็นแล้วควรใช้ความระมัดระวังก่อนที่จะบังคับค่าสัมประสิทธิ์เชิงบวก
Esme_

คำตอบ:


11
  1. ระวังความแตกต่างระหว่างค่าสหสัมพันธ์และความสัมพันธ์บางส่วน (เงื่อนไขความสัมพันธ์กับตัวแปรอื่น ๆ ) พวกเขาอย่างถูกกฎหมายอาจเป็นสัญญาณที่แตกต่างกัน

    นั่นคือจริงแล้วอาจเป็นลบในขณะที่สัมประสิทธิ์การถดถอยในการถดถอยหลายครั้งเป็นค่าบวก ไม่จำเป็นต้องขัดแย้งกันในสองสิ่งนี้ ดูความขัดแย้งของ Simpsonซึ่งค่อนข้างสัมพันธ์กัน (โดยเฉพาะแผนภาพ) โดยทั่วไปแล้วคุณไม่สามารถอนุมานได้ว่าสัมประสิทธิ์การถดถอยจะต้องเป็นเครื่องหมายเดียวโดยอิงจากการโต้เถียงเกี่ยวกับความสัมพันธ์ของชายขอบcorr(Y,Xi)

  2. ใช่เป็นไปได้อย่างแน่นอนที่จะ จำกัด สัมประสิทธิ์การถดถอยให้เป็นหรือ * มีหลายวิธีที่จะทำเช่นนั้น; บางส่วนของเหล่านี้สามารถทำได้อย่างง่ายดายมากพอในการวิจัยเช่นผ่านทาง ดูคำตอบสำหรับคำถามนี้ซึ่งกล่าวถึงแพ็คเกจ R จำนวนหนึ่งและแนวทางอื่น ๆ ที่เป็นไปได้000nnls

    อย่างไรก็ตามฉันขอเตือนคุณว่าอย่าเพิกเฉยกับประเด็นในข้อ 1. เพียงเพราะสิ่งเหล่านี้มีการนำมาใช้อย่างง่ายดาย

    * (คุณสามารถใช้โปรแกรมที่ไม่เป็นลบเพื่อทำสิ่งที่ไม่ใช่ค่าบวกโดยลบตัวแปรที่เกี่ยวข้อง)


10

อาจมีวิธีการดังกล่าว แต่ฉันจะบอกว่ามันไม่แนะนำให้เลือกในสถานการณ์ของคุณ

หากคุณมีผลลัพธ์ที่เป็นไปไม่ได้เช่นกัน:

1) มีปัญหากับข้อมูลของคุณ 2) มีปัญหากับคำจำกัดความของคุณ "เป็นไปไม่ได้" หรือ 3) คุณกำลังใช้วิธีการที่ไม่ถูกต้อง

ก่อนอื่นให้ตรวจสอบข้อมูล ประการที่สองตรวจสอบรหัส (หรือขอให้ผู้อื่นตรวจสอบ) หากทั้งคู่ดีแล้วบางทีสิ่งที่ไม่คาดคิดก็เกิดขึ้น

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

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


(+1 ทั้ง Peter และ Glen) @JRW - ถ้าคุณแก้ไขป้ายฉันอยากจะบินไปบนกำแพงเมื่อคุณพยายามอธิบายให้ผู้ฟังฟังว่าสัมประสิทธิ์ที่คุณ "ได้รับ" และช่วงความมั่นใจ ยิ่งไปกว่านั้นพวกเขาอาจถามอย่างถูกต้องว่าคุณได้แก้ไขสัญลักษณ์และ / หรือช่วงของผู้อื่นหรือไม่? ถ้าไม่ทำไมล่ะ
rolando2

6

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

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

> n <- rnorm(200)
> x <- rnorm(200)
> d <- data.frame(x1 = x+n, x2= 2*x+n, y=x)
> cor(d)
      x1        x2         y
 x1 1.0000000 0.9474537 0.7260542
 x2 0.9474537 1.0000000 0.9078732
 y  0.7260542 0.9078732 1.0000000
> plot(d)
> lm(y~x1+x2-1, d)

Call:
lm(formula = y ~ x1 + x2 - 1, data = d)

Coefficients:
x1  x2  
-1   1  

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