Hồi quy bội với các yếu tố dự báo phân loại và số


10

Tôi tương đối mới với R và tôi đang cố gắng điều chỉnh mô hình cho dữ liệu bao gồm cột phân loại và cột số (số nguyên). Biến phụ thuộc là một số liên tục.

Dữ liệu có định dạng sau:

preCarget, preIntNum, FeedbackVar

Dữ liệu trông giống như thế này:

ranking, age_in_years, wealth_indicator
category_A, 99, 1234.56
category_A, 21, 12.34
category_A, 42, 234.56
....
category_N, 105, 77.27

Làm thế nào tôi có thể mô hình hóa điều này (có lẽ, sử dụng GLM), trong R?

[[Biên tập]]

Nó vừa xảy ra với tôi (sau khi phân tích dữ liệu kỹ lưỡng hơn), rằng biến độc lập phân loại trên thực tế đã được đặt hàng. Do đó tôi đã sửa đổi câu trả lời được cung cấp trước đó như sau:

> fit2 <- glm(wealth_indicator ~ ordered(ranking) + age_in_years, data=amort2)
> 
> fit2

Call:  glm(formula = wealth_indicator ~ ordered(ranking) + age_in_years, 
    data = amort2)

Coefficients:
      (Intercept)  ordered(ranking).L  ordered(ranking).Q  ordered(ranking).C      age_in_years  
        0.0578500         -0.0055454         -0.0013000          0.0007603          0.0036818  

Degrees of Freedom: 39 Total (i.e. Null);  35 Residual
Null Deviance:      0.004924 
Residual Deviance: 0.00012      AIC: -383.2
> 
> fit3 <- glm(wealth_indicator ~ ordered(ranking) + age_in_years + ordered(ranking)*age_in_years, data=amort2)
> fit3

Call:  glm(formula = wealth_indicator ~ ordered(ranking) + age_in_years + 
    ordered(ranking) * age_in_years, data = amort2)

Coefficients:
                    (Intercept)                ordered(ranking).L                ordered(ranking).Q  
                      0.0578500                       -0.0018932                       -0.0039667  
              ordered(ranking).C                    age_in_years  ordered(ranking).L:age_in_years  
                      0.0021019                        0.0036818                       -0.0006640  
ordered(ranking).Q:age_in_years  ordered(ranking).C:age_in_years  
                      0.0004848                       -0.0002439  

Degrees of Freedom: 39 Total (i.e. Null);  32 Residual
Null Deviance:      0.004924 
Residual Deviance: 5.931e-05    AIC: -405.4

Tôi hơi bối rối bởi những gì ordered(ranking).C, ordered(ranking).Qordered(ranking).Lcó nghĩa là trong đầu ra, và sẽ đánh giá cao một số trợ giúp trong việc hiểu đầu ra này và cách sử dụng nó để dự đoán biến phản ứng.

Câu trả lời:


11

Thử cái này:

fit <- glm(wealth_indicator ~ 
           factor(ranking) + age_in_years + factor(ranking) * age_in_years)

Các factor()lệnh sẽ đảm bảo rằng R biết rằng biến của bạn là phân loại. Điều này đặc biệt hữu ích nếu các danh mục của bạn được biểu thị bằng số nguyên, nếu không glm sẽ diễn giải biến là liên tục.

Các factor(ranking) * age_in_yearshạn cho phép R bí quyết mà bạn muốn bao gồm các thuật ngữ tương tác.


1
Tại sao factor(ranking)và không as.factor(ranking)?
Peter Flom

1
Tôi thường xuyên sử dụng factor(x)để tôi có thể bao gồm các levelsđối số nếu tôi muốn. Bạn cũng có thể sử dụng as.factor(x)nếu bạn muốn, và trên thực tế nó có thể nhanh hơn, nhưng tôi nghĩ bạn sẽ cần một bộ dữ liệu khá lớn để tốc độ của các chức năng này trở nên quan trọng.
P Schnell

@PSchnell +1 cho câu trả lời ngắn gọn và giải thích tốt. Tuy nhiên, một điều là tôi đã nhận ra rằng yếu tố này được đặt hàng. Tôi đã sửa đổi công thức bạn cung cấp một chút, để phản ánh thực tế điều này (vui lòng xem câu hỏi đã chỉnh sửa của tôi). Tuy nhiên, tôi không chắc chắn tôi hiểu đầu ra mô hình (cụ thể ordered(ranking).C, ordered(ranking).Qordered(ranking).L- ý nghĩa của chúng là gì và làm cách nào để sử dụng biến đó để dự đoán biến phản hồi?) - bất kỳ trợ giúp nào sẽ được đánh giá cao. Cảm ơn
Homunculus Reticulli

1
.L, .Q.C, tương ứng là các hệ số cho yếu tố được sắp xếp được mã hóa với độ tương phản tuyến tính, bậc hai và khối. Lệnh contr.poly(4)sẽ hiển thị cho bạn ma trận tương phản cho một yếu tố có thứ tự với 4 cấp độ (3 bậc tự do, đó là lý do tại sao bạn có được một đa thức bậc ba). contr.poly(4)[2, '.L']sẽ cho bạn biết những gì cần cắm cho cấp thứ tự thứ hai trong thuật ngữ tuyến tính. Xin lưu ý rằng điều này giả định rằng sẽ hợp lý khi xem xét các cấp độ cách đều nhau. Nếu không, hãy viết mã ma trận tương phản của riêng bạn.
P Schnell

2
Theo ats.ucla.edu/stat/r/lvern/contrast_coding.htmlm#ORTHOGONAL , trong R, khi một biến liên tục được mô hình hóa để đáp ứng với biến nhân tố có thứ tự, độ tương phản mặc định được áp dụng là mã hóa đa thức trực giao onlinecferences.science.psu .edu / stat502 / nút / 203 . stats.stackexchange.com/a/206345/90600 có một số giải thích khá rộng rãi. stats.stackexchange.com/a/207128/90600 thậm chí còn đi sâu hơn.
Paul de Barros

2

Gần đây tôi đã trả lời biến phụ thuộc liên tục với biến độc lập thứ tự , khuyến nghị ordSmoothhàm trong ordPensgói. Điều này sử dụng hồi quy bị phạt để làm mịn hệ số giả giữa các cấp của một biến số thứ tự để chúng không thay đổi quá nhiều từ cấp này sang cấp khác. Ví dụ, có lẽ bạn sẽ không muốn category_Ahệ số của nó khác category_Bnhiều so với category_N. Bạn có thể muốn các hệ số tăng hoặc giảm đơn điệu, hoặc ít nhất là thay đổi dần dần theo các cấp bậc. Câu trả lời của tôi cho các câu hỏi liên kết liệt kê các tài liệu tham khảo để biết thêm.

ordSmoothcũng có thể chứa các biến liên tục (và danh nghĩa); trong trường hợp của bạn, mã có thể là:

SmoothFit=with(amort2,
ordSmooth(as.numeric(ordered(ranking)),wealth_indicator,z=age_in_years,lambda=.001))

ordSmoothyêu cầu đầu vào số cho dữ liệu thứ tự, do đó as.numeric(ordered())định dạng lại. zlà cho một vectơ số / ma trận / data.framecủa các yếu tố dự đoán liên tục. lambdalà hệ số làm mịn - các giá trị lớn hơn sẽ đẩy các hệ số của bạn gần bằng không. Có thể là khôn ngoan để bắt đầu nhỏ ở đây. In ấn SmoothFitsẽ cung cấp cho bạn các hệ số và giá trị phù hợp, nhưng tôi sợ nó để lại phần còn lại cho bạn.

Trong phương pháp của bạn, các ordered(ranking).C/ .Q/ .Lhệ số dường như được gắn nhãn lần lượt là khối, bậc hai và tuyến tính. Nếu bạn cố gắng glm(rnorm(10)~ordered(rep(1:5,2))), bạn cũng sẽ có được một hệ số ordered(rep(1:5, 2))^4. Tôi không thực sự chắc chắn tại sao những thứ này được biểu thị bằng số mũ; Tôi không nghĩ rằng nó mô hình hóa chúng như các thuật ngữ đa thức, bởi vì các hệ số là khác nhau cho glm(y~x+I(x^2)+I(x^3)+I(x^4))các biến thể tỷ lệ của điều này. Chúng phải là mã giả cơ bản .

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.