วิธีการใช้คำสัมประสิทธิ์สำหรับปัจจัยและเงื่อนไขเชิงโต้ตอบในสมการเชิงเส้น?


9

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

แนวคิด:เห็นได้ชัดว่าค่าสัมประสิทธิ์ของตัวแปรต่อเนื่อง 'x' ถูกนำมาใช้ในรูปแบบy = coefx(varx) + interceptแต่วิธีการที่ทำงานให้กับปัจจัย z ถ้าปัจจัยที่ไม่ใช่ตัวเลข?y = coefx(varx) + coefz(factorz???) + intercept

เฉพาะ:ฉันได้ติดตั้งแบบจำลองใน R เป็นlm(log(c) ~ log(d) + h + a + f + h:a)ตำแหน่งhและfปัจจัยที่ไม่ต่อเนื่องและไม่ใช่ตัวเลข ค่าสัมประสิทธิ์คือ:

Coefficients:
              Estimate 
(Intercept)  -0.679695 
log(d)        1.791294 
h1            0.870735  
h2           -0.447570  
h3            0.542033   
a             0.037362  
f1           -0.588362  
f2            0.816825 
f3            0.534440
h1:a         -0.085658
h2:a         -0.034970 
h3:a         -0.040637

ฉันจะใช้สิ่งเหล่านี้เพื่อสร้างสมการพยากรณ์ได้อย่างไร:

log(c) =  1.791294(log(d)) + 0.037362(a) + h??? + f???? + h:a???? + -0.679695

หรือฉันทำผิด

ฉันคิดว่าแนวคิดนั้นคือถ้าหัวเรื่องอยู่ในหมวดหมู่h1และf2สมการจะกลายเป็น:

log(c) =  1.791294(log(d)) + 0.037362(a) +  0.870735  + 0.816825  + h:a???? + -0.679695

แต่ฉันไม่ชัดเจนเกี่ยวกับวิธีการh:aแยกวิเคราะห์คำแบบโต้ตอบ ขอบคุณที่ไปง่าย ๆ กับฉัน

คำตอบ:


14

นี่ไม่ใช่ปัญหาเฉพาะของอาร์ R ใช้การแสดงสัมประสิทธิ์แบบดั้งเดิม

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

  • คน "ต่อเนื่อง" เป็นตัวเลขอย่างชัดเจนและค่าตัวเลขของพวกเขาถูกนำมาใช้ตามที่เป็นอยู่ในที่เหมาะสมการถดถอย

  • ตัวแปร "เด็ดขาด" สามารถเป็นประเภทใดก็ได้รวมถึงตัวแปรที่เป็นตัวเลข! สิ่งที่ทำให้พวกเขาจัดหมวดหมู่คือซอฟต์แวร์ถือว่าพวกเขาเป็น "ปัจจัย": นั่นคือแต่ละค่าที่แตกต่างที่พบจะถือเป็นตัวบ่งชี้ของสิ่งที่แตกต่าง

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

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

ในคำถามเราจะได้รับการบอกกล่าวhและfเป็นค่าที่เป็นหมวดหมู่ ("ไม่ต่อเนื่อง") โดยค่าเริ่มต้นlog(d)และaจะต่อเนื่อง นั่นคือทั้งหมดที่เราต้องรู้ รูปแบบคือ

y=0.679695+1.791294 log(d)+0.870735 if h=h10.447570 if h=h2+0.542033 if h=h3+0.037362 a0.588362 if f=f1+0.816825 if f=f2+0.534440 if f=f30.085658 a if h=h10.034970 a if h=h20.040637 a if h=h3

กฎที่ใช้ที่นี่คือ:

  • คำว่า "ตัด" ถ้าปรากฏเป็นค่าคงที่เพิ่มเติม (บรรทัดแรก)

  • ตัวแปรอย่างต่อเนื่องจะถูกคูณด้วยค่าสัมประสิทธิ์ของพวกเขาแม้จะอยู่ใน "ปฏิสัมพันธ์"เหมือนh1:a, h2:aและh3:aเงื่อนไข (นี่จะตอบคำถามเดิม)

  • ตัวแปรเด็ดขาดใด ๆ (หรือตัวประกอบ) ถูกรวมเฉพาะสำหรับกรณีที่ค่าของปัจจัยนั้นปรากฏขึ้น

ตัวอย่างเช่นสมมติว่าlog(d)=2, h=h3, a=1และ f=f2. ค่าติดตั้งในรุ่นนี้คือ

y^=0.6797+1.7913×(2)+0.5420+0.0374×(1)+0.81680.0406×(1).

แจ้งให้ทราบว่าส่วนใหญ่ของค่าสัมประสิทธิ์รูปแบบก็ไม่ปรากฏในการคำนวณเพราะhสามารถใช้ในว่าหนึ่งในสามของค่าh1, h2, h3และดังนั้นจึงมีเพียงหนึ่งในสามของค่าสัมประสิทธิ์(0.870735,0.447570,0.542033)นำไปใช้hและเพียงหนึ่งในสามของค่าสัมประสิทธิ์(-0.085658,-0.034970,-0.040637)จะทวีคูณaในการh:aโต้ตอบ; ในทำนองเดียวกันค่าสัมประสิทธิ์เดียวเท่านั้นที่ใช้กับfในกรณีใด ๆ


8

นี่เป็นเพียงความคิดเห็น แต่มันจะไม่พอดีเช่นในกล่องแก้ไขแบบ จำกัด ที่เรามีให้

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

ลองจำลองข้อมูลก่อน

n <- 200
x1 <- runif(n)
x2 <- runif(n)
x3 <- runif(n)
g1 <- gl(2, 100, n, labels=letters[1:2])
g2 <- cut2(runif(n), g=4)
y <- x1 + x2 + rnorm(200)

จากนั้นปรับโมเดลการถดถอย

f <- ols(y ~ x1 + x2 + x3 + g1 + g2 + x1:g1)

ซึ่งให้ผลลัพธ์ต่อไปนี้:

Linear Regression Model

ols(formula = y ~ x1 + x2 + x3 + g1 + g2 + x1:g1)

                Model Likelihood     Discrimination    
                   Ratio Test           Indexes        
Obs      200    LR chi2     35.22    R2       0.161    
sigma 0.9887    d.f.            8    R2 adj   0.126    
d.f.     191    Pr(> chi2) 0.0000    g        0.487    

Residuals

    Min      1Q  Median      3Q     Max 
-3.1642 -0.7109  0.1015  0.7363  2.7342 

                   Coef    S.E.   t     Pr(>|t|)
Intercept           0.0540 0.2932  0.18 0.8541  
x1                  1.1414 0.3642  3.13 0.0020  
x2                  0.8546 0.2331  3.67 0.0003  
x3                 -0.0048 0.2472 -0.02 0.9844  
g1=b                0.2099 0.2895  0.73 0.4692  
g2=[0.23278,0.553)  0.0609 0.1988  0.31 0.7598  
g2=[0.55315,0.777) -0.2615 0.1987 -1.32 0.1896  
g2=[0.77742,0.985] -0.2107 0.1986 -1.06 0.2901  
x1 * g1=b          -0.2354 0.5020 -0.47 0.6396  

จากนั้นหากต้องการพิมพ์สมการการถดถอยที่สอดคล้องกันเพียงใช้latexฟังก์ชันทั่วไปเช่นนี้

latex(f)

เมื่อทำการแปลง dvi เป็น png คุณควรได้รับสิ่งนั้น

ป้อนคำอธิบายรูปภาพที่นี่

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


1
+1 นั่นเป็นความสามารถที่ดี ไวยากรณ์ของคำศัพท์ที่ชอบ+0.2099013{}แม้ว่าอาจมีความสับสน: ไม่มีความสัมพันธ์ที่ชัดเจนระหว่างการแสดงออกนี้และตัวแปรเด็ดขาดg1และไม่ชัดเจนว่า{}หมายถึงตัวบ่งชี้ที่จริงๆก.1= แทนที่จะเป็นค่าตัวเลขของ ! (ที่นี่ จริงๆหมายถึง "b" - ตัวอักษร - ซึ่งอาจเป็นคำเตือนที่เพียงพอ แต่เมื่อหมวดหมู่ถูกเข้ารหัสด้วยตัวเลขเช่น 0 และ 1ระวัง ... )
whuber

1
@whuber ภาพด้านบนถูกครอบตัด แต่มีเชิงอรรถที่เรียกว่า "{c} = 1 หากหัวเรื่องอยู่ในกลุ่ม c, 0 เป็นอย่างอื่น" (ตัวเลือกcอาจสับสนในกรณีนี้เนื่องจากฉันเลือกตัวอักษรสองตัวเพื่อ แสดงถึงระดับ g1 แต่โดยปกติแล้วมันค่อนข้างใช้งานง่าย - และนั่นเป็นข้อความที่บริสุทธิ์ดังนั้นเราจึงยังสามารถแก้ไขไฟล์ต้นฉบับได้ในภายหลัง) สิ่งที่แนบมาเป็นอีกบทสรุปที่ฉันเปลี่ยนแปลงg1เพื่อให้มันเป็นปัจจัยสี่ระดับ แต่กับ 0/1 ฉลากที่อาจจะทำให้เกิดความสับสนมากขึ้น
chl

5

คุณสามารถตรวจสอบ "ความแตกต่าง" ของคุณเป็นค่าเริ่มต้นโดยoptions()และค้นหา:

$contrasts
        unordered           ordered 
"contr.treatment"      "contr.poly" 

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

ฉันคาดเดาจากผลลัพธ์ของคุณมี a h0และf0ซึ่งเป็นระดับพื้นฐานสำหรับ h และ f (เว้นแต่คุณจะมีตัวเลือกที่ไม่ใช่ค่าเริ่มต้นสำหรับความเปรียบต่างซึ่งในกรณีนี้มีความเป็นไปได้หลายอย่างลอง?contr.treatmentขอความช่วยเหลือ)

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

ดังนั้นในตัวอย่างของคุณโดยที่ h = h1 และ f = f2 ลอง:

log(c) =  1.791294(log(d)) + (0.037362 - 0.085658) (a) +  0.870735  + 0.816825  -0.679695

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


1 (ที่จริงฉัน upvoted นี้เดือนที่ผ่านมาและเพิ่งเกิดขึ้นที่จะกลับมา rereading ได้ในขณะนี้) ในอัตราใด ๆ options()ก็เกิดขึ้นกับผมที่คุณแนะนำให้ตรวจสอบชนิดของความคมชัดโดย คุณจะต้องเลื่อนผ่านขยะจำนวนมากเพื่อค้นหาสิ่งที่คุณต้องการ คุณอาจลองoptions()$contrastsซึ่งจะส่งออกเฉพาะสิ่งที่คุณต้องการ
gung - Reinstate Monica

คำแนะนำที่ดีสมองของฉันคงหลับไปแล้ว
Peter Ellis

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