Tôi đang cố gắng giúp đỡ một sinh viên của một đồng nghiệp. Học sinh quan sát và đếm hành vi của chim (số lượng cuộc gọi) trong một thiết lập thí nghiệm. Số lượng cuộc gọi được quy cho một con chim quan sát cụ thể trong mỗi thí nghiệm không thể xác định được nhưng việc đếm số lượng chim đóng góp vào số lượng cuộc gọi được ghi lại là có thể. Do đó, đề xuất ban đầu của tôi là đưa số lượng chim làm thuật ngữ bù vào mô hình Poisson GLM, do đó chúng tôi sẽ điều chỉnh số lượng cuộc gọi dự kiến cho mỗi con chim .
y
-Inf
offset(log(nbirds))
-Inf
Tôi thực sự nghi ngờ chúng ta cần một mô hình vượt rào (hoặc tương tự) trong đó chúng ta có một mô hình nhị thức riêng cho "các cuộc gọi được quan sát?" (hoặc không) và một mô hình đếm bị cắt ngắn cho số lượng cuộc gọi (trên mỗi con chim) trong các tình huống có cuộc gọi, trong đó chúng tôi chỉ bao gồm thuật ngữ bù trong phần đếm của mô hình.
Đã thử điều này bằng cách sử dụng gói pscl trong R, nhưng tôi vẫn gặp lỗi tương tự:
mod1 <- hurdle(NumberCallsCOPO ~ Condition * MoonVis +
offset(log(NumberCOPO)) | 1, data = Data,
dist = "poisson")
bởi vì cùng một mã R ( glm.fit
được sử dụng bên trong hurdle()
để phù hợp với phần mô hình đếm) đang kiểm tra -Inf
mặc dù tôi không nghĩ rằng nó sẽ ảnh hưởng đến sự phù hợp của mô hình cho những quan sát đó. (Đó có phải là một giả định đúng không?)
Tôi có thể làm cho mô hình phù hợp bằng cách thêm một số nhỏ vào NumberCOPO
(nói 0.0001
) nhưng đây là một sai lầm tốt nhất.
Việc thêm hiệu chỉnh liên tục nhỏ này có ổn trong thực tế không? Nếu không, chúng ta nên xem xét các cách tiếp cận nào khác khi xử lý dữ liệu mà chúng ta có thể muốn sử dụng phần bù trong mô hình Poisson trong đó biến bù có thể lấy giá trị 0? Tất cả các ví dụ tôi đã gặp là cho các tình huống trong đó 0 không thể thực hiện được cho biến bù.