Làm cách nào để phù hợp với mô hình hiệu ứng hỗn hợp phi tuyến cho dữ liệu đo lặp lại bằng cách sử dụng nlmer ()?


11

Tôi đang cố gắng phân tích dữ liệu đo lặp đi lặp lại và đang vật lộn để làm cho nó hoạt động R. Dữ liệu của tôi về cơ bản là như sau, tôi có hai nhóm điều trị. Mỗi môn học trong mỗi nhóm được kiểm tra hàng ngày và cho điểm (tỷ lệ phần trăm đúng trong bài kiểm tra). Dữ liệu ở định dạng dài:

Time Percent Subject   Group
   1       0    GK11 Ethanol
   2       0    GK11 Ethanol
   3       0    GK11 Ethanol
   4       0    GK11 Ethanol
   5       0    GK11 Ethanol
   6       0    GK11 Ethanol

Dữ liệu giống như một đường cong logistic, các đối tượng làm rất kém trong vài ngày sau đó là sự cải thiện nhanh chóng, tiếp theo là một cao nguyên. Tôi muốn biết liệu điều trị có ảnh hưởng đến đường cong hiệu suất thử nghiệm hay không. Tôi nghĩ là sử dụng nlmer()trong lme4gói R. Tôi có thể điều chỉnh các dòng cho mỗi nhóm bằng cách sử dụng như sau:

print(nm1 <- nlmer(Percent ~ SSlogis(Time,Asym, xmid, scal) ~ Asym | Subject,
salinedata, start = c(Asym =.60,  xmid = 23, scal = 5)), corr = FALSE)

Tôi có thể so sánh các nhóm bằng cách xem các ước tính cho các tham số khác nhau và độ lệch chuẩn của các dòng ước tính nhưng tôi không chắc đây là cách thích hợp để thực hiện. Mọi sự trợ giúp sẽ rất được trân trọng.

Câu trả lời:


4

Bạn có thể sử dụng các xét nghiệm tỷ lệ khả năng bình thường. Đây là một ví dụ đơn giản. Trước tiên, hãy tạo quan sát từ 10 cá nhân dựa trên các tham số của bạn:

Asym = .6
xmid = 23
scal = 5

n = 10
time = seq(1,60,5)

d = data.frame(time=rep(time,10),
               Asym, xmid, scal, group=0)
d$subj = factor(rep(1:n, each=length(time)))

Bây giờ hãy để một nửa trong số chúng có các thông số tiệm cận và trung điểm khác nhau:

ind = (nrow(d)/2):nrow(d)
d$Asym[ind] = d$Asym[ind] + .1
d$xmid[ind] = d$xmid[ind] + 10
d$group[ind] = 1
d$group=factor(d$group)

Chúng tôi có thể mô phỏng các giá trị phản hồi cho tất cả các cá nhân, dựa trên mô hình:

set.seed(1)
d = transform(d, y = Asym/(1+exp((xmid-time)/scal)) +
                     rnorm(nrow(d), sd=.04))
library(lattice)
xyplot(y~time | group, group=subj,
       data=d, type=c("g","l"), col="black")

Spaghetti lô của dữ liệu

Chúng ta có thể thấy sự khác biệt rõ ràng giữa hai nhóm, sự khác biệt mà các mô hình sẽ có thể nhận được. Bây giờ, trước tiên hãy thử điều chỉnh một mô hình đơn giản , bỏ qua các nhóm:

> fm1 = nls(y ~ SSlogis(time, Asym, xmid, scal), data=d)
> coef(fm1)
      Asym       xmid       scal 
 0.6633042 28.5219166  5.8286082

Có lẽ như mong đợi, các ước tính cho Asymxmidnằm ở đâu đó giữa các giá trị tham số thực cho hai nhóm. (Tuy nhiên, đây sẽ là trường hợp không rõ ràng, vì tham số tỷ lệ cũng được thay đổi, để điều chỉnh cho lỗi chính tả mô hình.) Bây giờ chúng ta hãy điều chỉnh một mô hình đầy đủ , với các tham số khác nhau cho hai nhóm:

> fm2 = nls(y ~ SSlogis(time, Asym[group], xmid[group], scal[group]),
          data=d,
          start=list(Asym=rep(.6,2), xmid=rep(23,2), scal=rep(5,2)))
> coef(fm2)
    Asym1     Asym2     xmid1     xmid2     scal1     scal2 
 0.602768  0.714199 22.769315 33.331976  4.629332  4.749555

Vì hai mô hình được lồng nhau, chúng tôi có thể thực hiện kiểm tra tỷ lệ khả năng:

> anova(fm1, fm2)
Analysis of Variance Table

Model 1: y ~ SSlogis(time, Asym, xmid, scal)
Model 2: y ~ SSlogis(time, Asym[group], xmid[group], scal[group])
  Res.Df Res.Sum Sq Df  Sum Sq F value    Pr(>F)    
1    117    0.70968                                 
2    114    0.13934  3 0.57034  155.54 < 2.2e-16 ***
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

Giá trị p cực nhỏ cho thấy rõ rằng mô hình đơn giản quá đơn giản; Hai nhóm làm khác nhau về các tham số của họ.

Tuy nhiên, hai ước tính tham số tỷ lệ gần như giống hệt nhau, với sự khác biệt chỉ là .1. Có lẽ chúng ta chỉ cần một tham số tỷ lệ? (Tất nhiên chúng tôi biết câu trả lời là có, vì chúng tôi đã mô phỏng dữ liệu.)

(Sự khác biệt giữa hai tham số tiệm cận cũng chỉ là .1, nhưng đó là sự khác biệt lớn khi chúng tôi tính đến các lỗi tiêu chuẩn - xem summary(fm2).)

Vì vậy, chúng tôi phù hợp với một mô hình mới, với một scaletham số chung cho hai nhóm, nhưng khác nhau Asymxmidcác tham số, như trước:

> fm3 = nls(y ~ SSlogis(time, Asym[group], xmid[group], scal),
          data=d,
          start=list(Asym=rep(.6,2), xmid=rep(23,2), scal=5))
> coef(fm3)
     Asym1      Asym2      xmid1      xmid2       scal 
 0.6035251  0.7129002 22.7821155 33.3080264  4.6928316

Và vì mô hình rút gọn được lồng trong mô hình đầy đủ, chúng ta lại có thể thực hiện kiểm tra tỷ lệ khả năng:

> anova(fm3, fm2)
Analysis of Variance Table

Model 1: y ~ SSlogis(time, Asym[group], xmid[group], scal)
Model 2: y ~ SSlogis(time, Asym[group], xmid[group], scal[group])
  Res.Df Res.Sum Sq Df     Sum Sq F value Pr(>F)
1    115    0.13945                             
2    114    0.13934  1 0.00010637   0.087 0.7685

Giá trị p lớn chỉ ra rằng mô hình rút gọn phù hợp cũng như mô hình đầy đủ, như mong đợi.

Tất nhiên chúng ta có thể thực hiện các thử nghiệm tương tự để kiểm tra xem các giá trị tham số khác nhau có cần thiết cho chỉ Asym, chỉ xmidhoặc cả hai. Điều đó nói rằng, tôi không khuyên bạn nên thực hiện hồi quy từng bước như thế này để loại bỏ các tham số. Thay vào đó, chỉ cần kiểm tra mô hình đầy đủ ( fm2) so với mô hình đơn giản ( fm1) và hài lòng với kết quả. Để định lượng bất kỳ sự khác biệt, âm mưu sẽ hữu ích.


đó là một câu trả lời tuyệt vời Làm thế nào bạn sẽ thay đổi phân tích này nếu một vài cá nhân được đo hai lần và bạn muốn kiểm soát mối tương quan trong từng cá nhân? Nếu bạn có thể giúp đỡ, tôi sẽ đánh giá cao hai xu của bạn! ( stats.stackexchange.com/questions/203040/ Google )
Nova

Cách tiếp cận này so với việc sử dụng nlmer()để tính các biện pháp lặp đi lặp lại trên các mẫu theo thời gian? Bạn có thể thực hiện cùng một loại chiến lược nhưng phù hợp với 1 mô hình với các hiệu ứng ngẫu nhiên cho subjectgroupso với một mô hình khác chỉ có các hiệu ứng ngẫu nhiên subjectvà so sánh.
Stefan Avey
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.