Đối số trọng số trong lm và lme rất khác nhau trong R- tôi có đang sử dụng chúng đúng không?


8

Vì vậy, dường như đối với tôi, hàm trọng số trong lm mang lại cho các quan sát trọng lượng càng lớn thì giá trị 'trọng lượng' của quan sát liên quan càng lớn, trong khi hàm lme trong lme lại hoàn toàn ngược lại. Điều này có thể được xác minh với một mô phỏng đơn giản.

#make 3 vectors- c is used as an uninformative random effect for the lme model
a<-c(1:10)
b<-c(2,4,6,8,10,100,14,16,18,20)
c<-c(1,1,1,1,1,1,1,1,1,1)

Nếu bây giờ bạn đang chạy một mô hình trong đó bạn cân nhắc các quan sát dựa trên nghịch đảo của biến phụ thuộc trong lm, bạn chỉ có thể tạo ra kết quả chính xác tương tự trong nlme nếu bạn cân chỉ bằng biến phụ thuộc, mà không lấy nghịch đảo.

summary(lm(b~a,weights=1/b))
summary(lme(b~a,random=~1|c,weights=~b))

Bạn có thể lật cái này và xem điều ngược lại là đúng- chỉ định trọng số = b trong lm yêu cầu trọng số = 1 / b để có kết quả lme phù hợp.

Vì vậy, tôi hiểu điều này rất nhiều, tôi chỉ muốn xác nhận về một điều và đặt câu hỏi về một điều khác.

  1. Nếu tôi muốn cân trọng lượng dữ liệu của mình dựa trên nghịch đảo của biến phụ thuộc, liệu có ổn không khi chỉ mã trọng số = ~ (biến phụ thuộc) trong lme?
  2. Tại sao lme được viết để xử lý trọng lượng hoàn toàn khác với lm? Mục đích của việc này ngoài việc tạo ra sự nhầm lẫn là gì?

Bất kỳ cái nhìn sâu sắc sẽ được đánh giá cao!


1
Câu trả lời cho 2. là chúng được viết bởi những người rất khác nhau để làm những việc rất khác nhau. lm()cần thiết để tương thích với S và các cuốn sách khác nhau, nlme thì không, và nó nhằm mục đích linh hoạt hơn, cho phép tính không đồng nhất được mô hình hóa linh hoạt hơn mức lmcho phép.
Gavin Simpson

Câu trả lời:


12

Q1

Trong lmeký hiệu weights = ~ bsẽ dẫn đến varFixedhàm phương sai được sử dụng với đối số duy nhất b. Hàm này sẽ thêm vào mô hình một hàm phương sai có dạng, trong đó lấy các giá trị của đối số vectơ .S2(v)S2(v)= =|v|vb

Do đó, bạn nên sử dụng weights = ~ I(1/b)trong lme()để có sai của .εTôi= =1/bTôi

Trong lmnhững gì bạn vượt qua weightsdường như là hoàn toàn ngược lại; weightsnghịch tỉ lệ với sai.

Tôi không chắc chắn 100% ý của bạn về trọng lượng dữ liệu của tôi , nhưng nếu bạn muốn cung cấp phương sai không đồng nhất của các quan sát, thì tôi nghĩ bạn muốn weights = ~ I(1/b).

Quý 2

Cảm giác ruột thịt của tôi (bạn phải hỏi các tác giả tương ứng của hai chức năng) rằng đây là beacuse lm()lme()được viết bởi những người rất khác nhau để làm những việc rất khác nhau. lm()cần thiết (đã mong muốn được) để tương thích với S và sách khác nhau, nlme không, và nó nhằm mục đích được linh hoạt hơn, cho phép tính không đồng nhất để được mô hình linh hoạt hơn lmcho phép thông qua việc sử dụng đúng chức năng thông qua varFunccơ sở hạ tầng.


Điều này là đủ rõ ràng. Theo "trọng số dữ liệu của tôi", ý tôi là tôi muốn mô hình phù hợp để xem xét rằng phần dư lớn nên được dự kiến ​​từ các quan sát lớn và phù hợp với một cái gì đó gần với bình phương tối thiểu phần trăm, thay vì bình phương nhỏ nhất. CSONG- Tôi đã xóa bài đăng chéo trên stack stack, xin lỗi!
colin

Bạn có thể muốn xem xét các hàm phương sai khác trong nlme . Những gì bạn đang làm là nói rằng phương sai của các quan sát của bạn chính xác là giá trị (tuyệt đối) của b. Có vẻ tốt hơn khi chỉ nói rằng phương sai tăng lên b. varPower()ví dụ: sẽ có phương sai là với ước tính một tham số mô hình. Điều này là ổn nếu không lấy 0 giá trị. Nếu nó có thể lấy 0 giá trị, thì hàm có thể tốt hơn, có phương sai là . σ^2×|b|2δδbvarExp()vmộtr(εTôi)= =σ^2×e2δ×bTôi
Gavin Simpson

Trong lm(), lưu ý từ ngữ rằng phương sai tỷ lệ với nghịch đảo của weights. Trong lmemã chúng ta đã thảo luận, b phương sai. Theo giải thích của bạn, tôi không nghĩ bạn thực sự muốn điều đó ... Cũng lưu ý rằng nếu phương sai tăng với phản ứng trung bình, thì GLMM có thể phù hợp và gói lme4 sẽ phù hợp vì nó có thể mô hình hóa mối quan hệ phương sai trung bình trực tiếp , thay vì thông qua sửa đổi cho ma trận hiệp phương sai - đó là những gì lmemã đang làm.
Gavin Simpson

Cuối cùng, xin lỗi nếu tôi nghe có vẻ gắt gỏng trên Stack Overflow . Đó không phải là chủ ý. Tôi chỉ quên rằng bạn không thể bỏ phiếu để đóng dưới dạng OT & di chuyển sang Xác thực chéo . Bạn phải để lại một bình luận tại sao nhưng tôi đã để lại bình luận đầu tiên. Đừng chọn một trang SE cho câu hỏi của bạn dựa trên số mắt sẽ nhìn thấy nó. Chọn địa điểm thích hợp nhất. Không có gì sai khi quảng bá câu hỏi của bạn trên Cross xác thực để có được nhiều ánh mắt hơn, bạn thậm chí có thể đăng liên kết đến nó trong Phòng trò chuyện công khai R trên Stack Overflow . Crossposting hoặc đăng câu hỏi OT làm loãng tài nguyên nếu chúng ta có quá nhiều, do đó đóng phiếu, v.v.
Gavin Simpson
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.