Làm thế nào để thực hiện một mô hình tuyến tính tổng quát với nhiều biến phụ thuộc trong R?


17

Tôi có sáu biến phụ thuộc (dữ liệu đếm) và một số biến độc lập, tôi thấy rằng trong MMR, kịch bản diễn ra như sau:

my.model <- lm(cbind(DV1,DV2,DV3,DV4,DV5,DV6) ~ IV1 + IV2 + ... + IVn)

Nhưng, vì dữ liệu của tôi là số đếm, tôi muốn sử dụng mô hình tuyến tính tổng quát và tôi đã thử điều này:

my.model <- glm(cbind(DV1,DV2,DV3,DV4,DV5,DV6) ~ IV1 + IV2 + ... + IVn, family="poisson")

Và xuất hiện thông báo lỗi này:

Error in glm.fit(x = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  : 
  (subscript) logical subscript too long`

Bất cứ ai có thể giải thích cho tôi thông báo lỗi này hoặc một cách để giải quyết vấn đề của tôi?


Theo dõi câu trả lời của @Giorgio Speesato: chúng tôi có cho rằng bạn muốn có một bộ mô hình xử lý riêng từng biến phụ thuộc, như lmkhi bạn đưa ra ma trận không?
liên hợp chiến

Tôi nhớ phần thứ hai của phân tích. Trong một MMR (Đa biến hồi quy) sau: lm(cbind(DV1,DV2,DV3,DV4,DV5,DV6) ~ IV1 + IV2 + ... + IVn) Tôi phải
Juan

Tôi có thể vừa điều chỉnh câu trả lời của mình để trả lời câu hỏi này. Ngoài ra, hãy nhớ không nhấn return trong các bình luận :-)
liên hợp

Tôi nhớ phần thứ hai của phân tích. Trong MMR (Đa biến hồi quy) sau: lm(cbind(DV1,DV2,DV3,DV4,DV5,DV6) ~ IV1 + IV2 + ... + IVn) Tôi phải sử dụng lệnh manova () như thế này: summary(manova(my.model)) để thực hiện phân tích đa biến về phương sai và xem tầm quan trọng của từng biến độc lập. Đó là mục tiêu cuối cùng.
Juan

Cả manova và anova đều không được định nghĩa cho loại dữ liệu này, do đó nó không được cung cấp. Nhưng nếu bạn muốn xem tác động của từng IV thì bảng hồi quy được cung cấp summarysẽ cung cấp cho bạn cho mỗi DV.
liên hợp chiến

Câu trả lời:


11

Câu trả lời ngắn gọn là glmkhông hoạt động như vậy. Nó lmsẽ tạo mlmcác đối tượng nếu bạn cung cấp cho nó một ma trận, nhưng điều này không được hỗ trợ rộng rãi trong các tổng quát và dù sao cũng không thể dễ dàng khái quát hóa glmvì người dùng cần có thể chỉ định các biến phụ thuộc cột kép cho các mô hình hồi quy logistic.

Giải pháp là để phù hợp với các mô hình riêng biệt. Giả sử IV và DV của bạn sống trong data.frame được gọi ddvà được gắn nhãn theo cách chúng nằm trong câu hỏi của bạn. Đoạn mã sau tạo một danh sách các mô hình được trang bị được lập chỉ mục theo tên của biến phụ thuộc mà chúng sử dụng:

models <- list()
dvnames <- paste("DV", 1:6, sep='')
ivnames <- paste("IV", 1:n, sep='') ## for some value of n

for (y in dvnames){
  form <- formula(paste(y, "~", ivnames))
  models[[y]] <- glm(form, data=dd, family='poisson') 
}

Để kiểm tra kết quả, chỉ cần bọc các chức năng thông thường của bạn trong một lapply, như thế này:

lapply(models, summary) ## summarize each model

Không có nghi ngờ gì cách thanh lịch hơn để làm điều này trong R, nhưng điều đó nên làm việc.


6

Tôi đã nói với các mô hình tuyến tính tổng hợp (hỗn hợp) đa biến tồn tại giải quyết vấn đề của bạn. Tôi không phải là một chuyên gia về nó, nhưng tôi sẽ xem tài liệu SABERcuốn sách này về GLM đa biến. Có lẽ họ giúp ...


2
Bạn đưa ra một điểm thú vị (+1). GLM đa biến chắc chắn tồn tại. Mặt khác, việc đưa ra lmmột ma trận cho một biến phụ thuộc có lẽ nên được xem như là đường cú pháp, hơn là biểu thức của một mô hình đa biến: nếu đó một mô hình đa biến (bình thường) thì đó sẽ là một lỗi trong đó ' hình cầu ', tức là một trong đó bạn có thể chạy hồi quy riêng trên từng phần tử của biến phụ thuộc và nhận được cùng một câu trả lời.
liên hợp chiế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.