Câu hỏi về hồi quy logistic


14

Tôi muốn chạy hồi quy logistic nhị phân để mô hình hóa sự hiện diện hay vắng mặt của xung đột (biến phụ thuộc) từ một tập hợp các biến độc lập trong khoảng thời gian 10 năm (1997-2006), với mỗi năm có 107 quan sát. Độc lập của tôi là:

  • suy thoái đất (phân loại cho 2 loại suy thoái);
  • tăng dân số (0- không; 1-có);
  • loại sinh kế (0 - loại một; 1 - loại hai);
  • mật độ dân số (ba mức mật độ);
  • NDVI liên tục (năng suất thuần chay tối đa);
  • NDVI t - 1 (giảm rau từ năm trước - 0 - không; 1 -eses) vàt1
  • và NDVI t - 2 (suy giảm rau từ hai năm trước - 0- không; 1- có).t2

Tôi khá mới với tất cả - đây là một dự án mà giảng viên của tôi đã đưa cho tôi - và vì vậy tôi sẽ biết ơn một số lời khuyên hoặc hướng dẫn. Tôi đã thử nghiệm cho đa cộng đồng rồi.

Về cơ bản, dữ liệu của tôi được chia thành 107 đơn vị quan sát (các vùng không gian) trong vòng 10 năm (tổng cộng 1070) và với mỗi đơn vị quan sát, nó mang lại giá trị 'ảnh chụp nhanh' về các điều kiện của các biến độc lập tại thời điểm đó trong đơn vị đó ( khu vực). Tôi muốn biết cách thiết lập hồi quy logistic (hoặc bảng) của mình để nhận ra 107 giá trị của mỗi năm một cách riêng biệt để có thể đánh giá NDVI tạm thời giữa các năm đơn vị khác nhau?


2
Phần mềm nào bạn đang sử dụng? Ngoài ra, giảng viên của bạn có nói với bạn sử dụng hồi quy logistic không? Dường như với tôi rằng điều này đòi hỏi một loại mô hình đa cấp nào đó, nhưng nếu bạn chỉ học logistic, đó có thể không phải là ý định của giảng viên.
Peter Flom - Tái lập Monica

1
Bạn chỉ muốn kiểm soát sự tự tương quan thời gian hay bạn muốn mô hình hóa các xu hướng (về khả năng xảy ra xung đột và / hoặc thay đổi thời gian trong các tác động của yếu tố rủi ro)?
Macro

Chỉ tự tương quan thời gian
Stephen

Bản chất của dữ liệu của bạn là không gian-thời gian. Vì vậy, một mô hình thực sự được lựa chọn phải xem xét tính chất này.
hbaghishani

3
nếu bạn chỉ muốn kiểm soát sự tự tương quan thời gian, bạn có thể sử dụng GEE (Phương trình ước tính tổng quát) và suy luận của bạn với các lỗi tiêu chuẩn mạnh.
Macro

Câu trả lời:


6

Đây thực sự là một vấn đề cực kỳ phức tạp và là một câu hỏi khó từ giảng viên của bạn!

Về cách bạn sắp xếp dữ liệu của mình, hình chữ nhật 1070 x 10 là ổn. Ví dụ: trong R:

> conflict.data <- data.frame(
+ confl = sample(0:1, 1070, replace=T),
+ country = factor(rep(1:107,10)),
+ period = factor(rep(1:10, rep(107,10))),
+ landdeg = sample(c("Type1", "Type2"), 1070, replace=T),
+ popincrease = sample(0:1, 1070, replace=T),
+ liveli =sample(0:1, 1070, replace=T),
+ popden = sample(c("Low", "Med", "High"), 1070, replace=T),
+ NDVI = rnorm(1070,100,10),
+ NDVIdecl1 = sample(0:1, 1070, replace=T),
+ NDVIdecl2 = sample(0:1, 1070, replace=T))
> head(conflict.data)
  confl country period landdeg popincrease liveli popden     NDVI NDVIdecl1 NDVIdecl2
1     1       1      1   Type1           1      0    Low 113.4744         0         1
2     1       2      1   Type2           1      1   High 103.2979         0         0
3     0       3      1   Type2           1      1    Med 109.1200         1         1
4     1       4      1   Type2           0      1    Low 112.1574         1         0
5     0       5      1   Type1           0      0   High 109.9875         0         1
6     1       6      1   Type1           1      0    Low 109.2785         0         0
> summary(conflict.data)
     confl           country         period     landdeg     popincrease         liveli        popden         NDVI          NDVIdecl1        NDVIdecl2     
 Min.   :0.0000   1      :  10   1      :107   Type1:535   Min.   :0.0000   Min.   :0.0000   High:361   Min.   : 68.71   Min.   :0.0000   Min.   :0.0000  
 1st Qu.:0.0000   2      :  10   2      :107   Type2:535   1st Qu.:0.0000   1st Qu.:0.0000   Low :340   1st Qu.: 93.25   1st Qu.:0.0000   1st Qu.:0.0000  
 Median :1.0000   3      :  10   3      :107               Median :1.0000   Median :1.0000   Med :369   Median : 99.65   Median :1.0000   Median :0.0000  
 Mean   :0.5009   4      :  10   4      :107               Mean   :0.5028   Mean   :0.5056              Mean   : 99.84   Mean   :0.5121   Mean   :0.4888  
 3rd Qu.:1.0000   5      :  10   5      :107               3rd Qu.:1.0000   3rd Qu.:1.0000              3rd Qu.:106.99   3rd Qu.:1.0000   3rd Qu.:1.0000  
 Max.   :1.0000   6      :  10   6      :107               Max.   :1.0000   Max.   :1.0000              Max.   :130.13   Max.   :1.0000   Max.   :1.0000  
                  (Other):1010   (Other):428                                                                                                              
> dim(conflict.data)
[1] 1070   10

Để phù hợp với một mô hình, hàm glm () như @ gui11aume gợi ý sẽ làm những điều cơ bản ...

mod <- glm(confl~., family="binomial", data=conflict.data)
anova(mod)

... nhưng điều này có vấn đề là nó đối xử với "quốc gia" (Tôi giả sử bạn có quốc gia là 107 đơn vị của mình) dưới dạng hiệu ứng cố định, trong khi hiệu ứng ngẫu nhiên thì phù hợp hơn. Nó cũng coi thời gian là một yếu tố đơn giản, không cho phép tự tương quan.

Bạn có thể giải quyết vấn đề đầu tiên với mô hình hiệu ứng hỗn hợp tuyến tính tổng quát như trong gói lme4 của Bates et al trong R. Có một giới thiệu hay về một số khía cạnh của vấn đề này ở đây . Cái gì đó như

library(lme4)
mod2 <- lmer(confl ~ landdeg + popincrease + liveli + popden + 
    NDVI + NDVIdecl1 + NDVIdecl2 + (1|country) +(1|period), family=binomial,
    data=conflict.data)
summary(mod2)

sẽ là một bước tiến.

Bây giờ vấn đề cuối cùng còn lại của bạn là tự động tương quan trong 10 tiết của bạn. Về cơ bản, 10 điểm dữ liệu của bạn trên mỗi quốc gia không có giá trị nhiều như thể chúng là 10 điểm phân phối độc lập và được xác định ngẫu nhiên. Tôi không biết về một giải pháp phần mềm có sẵn rộng rãi để tự tương quan trong phần dư của một mô hình đa cấp với phản hồi không bình thường. Chắc chắn nó không được thực hiện trong lme4. Những người khác có thể biết nhiều hơn tôi.


Câu hỏi (chưa được trả lời) này cũng có liên quan - stats.stackexchange.com/questions/20613/ mẹo
Peter Ellis

1

Hướng dẫn này là toàn diện.

Trong R, bạn cần chuẩn bị dữ liệu của mình, giả sử biến datatrong a data.frame, cột đầu tiên là biến 0-1 (xung đột) và các cột khác là các yếu tố dự đoán. Đối với các biến phân loại, bạn phải chắc chắn rằng chúng thuộc loại factor. Để đảm bảo rằng cột 3, giả sử, có thuộc tính này, bạn có thể thực thi bằng data[,3] <- as.factor(data[,3]).

Sau đó, nó chỉ là một vấn đề của

glm(data, family="binomial")

Điều này mặc nhiên giả định rằng bạn có một mô hình phụ gia và cung cấp cho bạn các giá trị ước tính. Để có được đầu ra toàn diện hơn, với thử nghiệm cho các tham số riêng lẻ, bạn có thể làm

summary(glm(data, family="binomial"))
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.