Monday, September 22, 2014

Vẽ biểu đồ theo thời gian cho từng đối tượng

Trong các nghiên cứu theo thời gian (longitudinal studies), mỗi đối tượng được theo dõi một thời gian, và do đó có nhiều giá trị đo lường. Chúng ta muốn vẽ biểu đồ cho mỗi đối tượng, với trục hoành là thời gian và trục tung là giá trị đo lường. Hàm xyplot trong package lattice có ích cho việc này.


Ví dụ:


# nhập số liệu glucose và gọi tên biến của là y:

y = c(5.9, 3.9, 3.9, 3.6, 5.3, 4.7, 3.5, 3.2, 4.6, 3.7,
      3.3, 3.2, 6.2, 4.6, 4.3, 3.9, 6.0, 5.4, 5.2, 4.8,
      6.4, 4.7, 4.8, 4.3, 7.6, 4.1, 3.8, 4.1, 5.9, 3.1,
      3.6, 3.3, 7.5, 6.1, 5.4, 4.6, 6.2, 5.3, 4.9, 4.5,
      6.9, 5.6, 5.9, 5.9, 5.6, 4.7, 4.6, 4.0, 5.1, 3.9,
      2.9, 2.9, 5.7, 4.7, 4.3, 4.6, 5.0, 4.0, 3.5, 3.3,
      5.2, 4.2, 4.0, 3.8, 7.7, 6.2, 6.1, 5.7, 8.0, 5.8,
      6.5, 6.0, 7.7, 5.0, 6.3, 6.2)

# 3 lệnh sau đây thực hiện 3 việc:
# tạo biến số id
# tạo biến số time có giá trị 0,2,3,4 lặp lại 19 lần
# tạo biến số treatment

id = rep(1:19, each=4)
time = rep(c(0,2,3,4), 19)
treatment = rep(1:2, c(9*4, 10*4))
glucose = data.frame(id,treatment, time ,y)


# Vẽ biểu đồ cho từng chuột
 
library(lattice)

xyplot(y ~ time | id, type=c("p","r"), as.table=time, xlab="Time", ylab="Glucose")





Hàm sau đây cho chúng ta thấy sự dao động của nồng đồ glucose lúc ban đầu cũng như tốc độ thay đổi glucose theo thời gian giữa các đối tượng:

fit = by(glucose, id, 
       function(data) fitted.values(lm(y ~ time, data=data)))  
fit = unlist(fit)
names(fit) = NULL
 
interaction.plot(time, id, fit, xlab="Time", ylab="Glucose")


No comments:

Post a Comment