Làm thế nào để áp dụng thuật ngữ hệ số cho các yếu tố và thuật ngữ tương tác trong một phương trình tuyến tính?


9

Sử dụng R, tôi đã trang bị một mô hình tuyến tính cho một biến phản ứng duy nhất từ ​​hỗn hợp các yếu tố dự đoán liên tục và rời rạc. Điều này là cơ bản, nhưng tôi gặp khó khăn trong việc nắm bắt cách một hệ số cho một yếu tố rời rạc hoạt động.

Khái niệm: Rõ ràng, hệ số của biến liên tục 'x' được áp dụng ở dạng y = coefx(varx) + interceptnhưng làm thế nào nó hoạt động cho một yếu tố z nếu yếu tố này không phải là số?y = coefx(varx) + coefz(factorz???) + intercept

Cụ thể: Tôi đã trang bị một mô hình trong R như lm(log(c) ~ log(d) + h + a + f + h:a)ở đâu hflà các yếu tố không phải là số. Các hệ số là:

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

Làm cách nào để sử dụng chúng để tạo phương trình dự đoán:

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

Hay tôi đang làm sai?

Tôi nghĩ rằng khái niệm đó là nếu đối tượng rơi vào loại h1f2, phương trình trở thành:

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

Nhưng tôi thực sự không rõ ràng về cách h:athuật ngữ tương tác được phân tích cú pháp. Cảm ơn vì đã đi dễ dàng với tôi.

Câu trả lời:


14

Đây không phải là vấn đề cụ thể đối với R. R sử dụng hiển thị các hệ số thông thường.

Khi bạn đọc đầu ra hồi quy như vậy (trong một bài báo, sách giáo khoa hoặc từ phần mềm thống kê), bạn cần biết biến nào là "liên tục" và "biến" là gì:

  • Các giá trị "liên tục" là số rõ ràng và các giá trị số của chúng được sử dụng như trong phần khớp hồi quy.

  • Các biến "phân loại" có thể thuộc bất kỳ loại nào , bao gồm cả các biến số! Điều làm cho chúng phân loại là phần mềm coi chúng là "các yếu tố": nghĩa là, mỗi giá trị riêng biệt được tìm thấy được coi là một chỉ số của một cái gì đó khác biệt.

    Hầu hết các phần mềm sẽ coi các giá trị không phải là số (như chuỗi) là các yếu tố. Hầu hết các phần mềm có thể được thuyết phục để coi các giá trị số là các yếu tố. Ví dụ: mã dịch vụ bưu chính (mã ZIP ở Mỹ) trông giống như một số nhưng thực sự chỉ là mã cho một bộ hộp thư; sẽ không có ý nghĩa gì khi cộng, trừ và nhân mã ZIP với các số khác! (Tính linh hoạt này là nguồn gốc của một lỗi phổ biến: nếu bạn không cẩn thận hoặc không muốn, phần mềm của bạn có thể coi một biến bạn coi là phân loại là liên tục hoặc ngược lại. Hãy cẩn thận!)

    Tuy nhiên, các biến phân loại phải được biểu diễn theo một cách nào đó dưới dạng số để áp dụng các thuật toán phù hợp. Có nhiều cách để mã hóa chúng. Các mã được tạo bằng cách sử dụng "biến giả". Tìm hiểu thêm về mã hóa biến giả bằng cách tìm kiếm trên trang web này; các chi tiết không quan trọng ở đây.

Trong câu hỏi, chúng tôi được cho biết rằng hflà các giá trị phân loại ("rời rạc"). Theo mặc định, log(d)alà liên tục. Đó là tất cả những gì chúng ta cần biết. Mô hình là

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

Các quy tắc được áp dụng ở đây là:

  • Thuật ngữ "chặn", nếu nó xuất hiện, là hằng số phụ gia (dòng đầu tiên).

  • Các biến liên tục được nhân với hệ số của họ, ngay cả trong "tương tác" giống như h1:a, h2:ah3:acác điều khoản. (Điều này trả lời câu hỏi ban đầu.)

  • Bất kỳ biến phân loại (hoặc yếu tố) được bao gồm chỉ đối với trường hợp giá trị của yếu tố xuất hiện.

Ví dụ: giả sử , , và . Giá trị được trang bị trong mô hình này làlog(d)=2h=h3a=1f=f2

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

Thông báo như thế nào hầu hết các hệ số mô hình đơn giản là không xuất hiện trong tính toán, bởi vì hcó thể đảm nhận chính xác một trong ba giá trị , , và do đó chỉ có một trong ba hệ số áp dụng cho và chỉ một trong ba hệ số sẽ nhân lên trong tương tác; tương tự, chỉ có một hệ số áp dụng cho bất kỳ trường hợp cụ thể nào.h 2 h 3 ( 0.870735 , - 0.447570 , 0.542033 ) ( - 0,085658 , - 0,034970 , - 0,040637 )h1h2h3(0.870735,0.447570,0.542033)h(0.085658,0.034970,0.040637)ah:af


8

Đây chỉ là một nhận xét nhưng nó sẽ không phù hợp như vậy trong các hộp chỉnh sửa giới hạn mà chúng tôi có theo ý của chúng tôi.

LATEX

Trước tiên hãy mô phỏng một số dữ liệu

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)

sau đó phù hợp với mô hình hồi quy,

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

mang lại kết quả như sau:

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  

Sau đó, để in phương trình hồi quy tương ứng, chỉ cần sử dụng latexhàm chung , như thế này:

latex(f)

Khi chuyển đổi dvi sang png, bạn sẽ nhận được một cái gì đó như thế

nhập mô tả hình ảnh ở đây

IMO, điều này có giá trị chỉ ra cách tính các giá trị dự đoán tùy thuộc vào giá trị thực tế hoặc được chọn cho các dự đoán số và phân loại. Đối với sau này, các mức yếu tố được chỉ định trong dấu ngoặc gần hệ số tương ứng.


1
+0.2099013{b}g1{b}g1=bbb01

1
@whuber Hình ảnh trên đã bị cắt nhưng có một chú thích nhắc lại rằng "{c} = 1 nếu chủ đề nằm trong nhóm c, 0 nếu không" (sự lựa chọn ccó thể gây nhầm lẫn trong trường hợp cụ thể này, vì tôi chọn hai chữ cái để đại diện cho các cấp g1, nhưng thông thường nó khá trực quan - và đó là tex thuần túy nên chúng tôi vẫn có thể chỉnh sửa tệp nguồn sau đó). Kèm theo là một bản tóm tắt khác mà tôi đã thay đổi g1để bây giờ nó là một yếu tố bốn cấp độ. Tuy nhiên, với các nhãn 0/1 có thể gây nhầm lẫn hơn .
chl

5

Bạn có thể kiểm tra "độ tương phản" của mình là mặc định options()và tìm kiếm:

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

Nếu độ tương phản không được sắp xếp của bạn được đặt là contr.treatment(như chúng sẽ được trừ khi bạn thay đổi chúng), thì cấp độ đầu tiên của mỗi yếu tố của bạn sẽ được đặt làm đường cơ sở. Bạn sẽ chỉ được cung cấp các ước tính cho các hệ số trước các biến giả được tạo cho các cấp độ khác của yếu tố. Trên thực tế, các hệ số đó sẽ là "mức độ trung bình của biến phản ứng ở mức này của yếu tố này, so với mức cơ sở của yếu tố, đã kiểm soát mọi thứ khác trong mô hình".

Tôi đoán từ đầu ra của bạn có một h0f0đó là các mức cơ sở cho h và f (trừ khi bạn có một tùy chọn không mặc định cho độ tương phản, trong trường hợp đó có một số khả năng; hãy thử ?contr.treatmentmột số trợ giúp).

Nó tương tự với sự tương tác. Nếu đoạn trước của tôi là chính xác, ước tính được đưa ra asẽ thực sự là độ dốc cho akhi nào h=h0. Các ước tính được đưa ra trong bản tóm tắt áp dụng cho các tương tác là mức độ dốc thay đổi cho các mức độ khác nhau h.

Vì vậy, trong ví dụ của bạn, nơi h = h1 và f = f2, hãy thử:

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

Ồ, và bạn cũng có thể sử dụng predict()để làm rất nhiều điều hữu ích ... nếu bạn thực sự muốn dự đoán điều gì đó (thay vì viết ra phương trình cho một báo cáo). Hãy thử ?predict.lmxem những gì predict()làm cho một đối tượng được tạo bởi lm.


+1 (thực ra, tôi đã nâng cấp điều này một tháng trước và tình cờ đọc lại nó ngay bây giờ) với bất kỳ giá nào, tôi nghĩ rằng bạn nên kiểm tra loại tương phản bằng cách options(). Bạn sẽ phải cuộn qua rất nhiều thứ linh tinh để tìm thứ bạn cần. Bạn có thể thử options()$contrasts, sẽ chỉ xuất ra những gì bạn muốn.
gung - Tái lập Monica

đề nghị tốt, bộ não của tôi đã được ngủ.
Peter Ellis

Bạn biết đấy, tôi thường trả lời các câu hỏi CV ngay trước khi tôi đi ngủ ...
gung - Tái lập Monica
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.