热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在R中对2x2x2设计进行纵向分析?-Howtodolongitudinalanalysisfor2x2x2designinR?

Ihaveadatasetwiththefollowingvariablesforthetreatment(nutrition,fertilizer),thatrecord

I have a dataset with the following variables for the treatment (nutrition, fertilizer), that records algal growth in water across time (t0, t1...t10). In series with fertilizer marked as "nitrogen" , nitrogen was added after day t5. In series marked as "none", no nitrogen was added.

我有一个数据集,关于处理(营养,肥料),它记录了水随时间的海藻生长(t0, t1…t10)。在第5天之后,用标有“氮”的肥料,依次添加氮肥。在标记为“无”的系列中,不添加氮。

nutrition <- c("good","good","bad","bad","good","good","bad","bad","good","good","bad","bad","good","good","bad","bad")

fertlizer <- c("none", "nitrogen","none","nitrogen","none", "nitrogen","none","nitrogen","none", "nitrogen","none","nitrogen","none", "nitrogen","none","nitrogen")

t0 <- c(7,  6,  3, 20, 13,  4, 14,  9, 15,  5, 18, 19,  8,  1, 10, 16)
t1 <- c(12,  9,  3, 20,  4,  7,  6, 17, 19,  5, 18,  8, 15, 16, 10,  2)
t2 <- c(12,  9,  3, 20,  4,  7,  6, 17,7,  6,  3, 20, 13,  4, 14,  9)
t3 <- c(15,  5, 18, 19,  8,  1, 10, 16,4,  7,  6, 17,7,  6,  3, 20)
t4 <- c(6,7,12,4,7,18,9,10,2,10,11,14,15,1,14,16)
t5 <- c(4,  7,  6, 17,7,  6,  3, 20,15,  5, 18, 19,  8,  1, 10, 16)
t6 <- c(70,5,16,31,61,14,22,23,80,13,24,32,90,16,28,29)
t7 <- c(56,16,7,8,78,26,28,30,91,5,8,19,67,16,18,19)
t8 <- c(88,21,20,19,90,16,18,19,57,3, 20,  4,  7,67,13,12)
t9 <- c(62,12,15,27,71,20,  4,  7,72,6,  3, 20,73,14,  9, 15)
t10 <- c(40,13,7,19,50,3, 20, 7,66,14,  9, 15,80,16,18,19)


replicates <- c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)

data <- data.frame(nutrition, fertlizer,replicates, t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10)

data$nutrition <- as.factor(data$nutrition)
data$fertlizer <- as.factor(data$fertlizer)

I want to compare the slopes between groups and see if the slopes change after the fertilizer intervention. I want to use no fertilizer as control (i.e. (good, none) or (bad, none) as controls)

我想比较各组之间的坡度,看看肥料干预后坡度是否会变化。我希望不使用肥料作为控制(即(好的,没有)或(坏的,没有)作为控制)

I transform this data into long format with column headers as "nutrition", "fertilizer", "time", "replicates", and "growth" I create a new column called addition to distinguish between time periods before t5 and after t5. Time before t5 -> 0, after t5 ->1

我将这些数据转换为长格式,列标题为“营养”、“肥料”、“时间”、“复制”和“增长”,我创建了一个名为add的新列,用于区分t5之前和t5之后的时间段。t5 ->之前的时间,t5 ->1之后的时间

   nutrition fertilizer time replicate growth addition
   good      none      t0   1         6        0
   good      none      t1   1         7        0
   ..
   ..
   good      none      t5   1         3        1

I run the following longitudinal analysis, with each column having the following structure:

我运行以下纵向分析,每一列有以下结构:

nutrition: factor with 2 levels
fertlizer: factor with2 levels
time: factor with 10 levels
replicates: num 0,1,2,3...
growth: num 6, 7, 5 ...
addition: factor with 2 levels

lmer(growth ~ nutrition + fertlizer + time + addition + (1|replicates))

lmer(生长~营养+ fertlizer +时间+添加+(1|复制)

I get an errror message saying that fixed effects model is rank deficient so dropping x number of columns. Is there anyway around this problem? Are there suggestions to improve the way the model is written?

我得到一个错误消息,说固定效果模型有等级缺陷,所以减少x列。这个问题是否有解决的办法?是否有改进模型编写方式的建议?

2 个解决方案

#1


1  

I'm not 100% sure on this, but I believe it should get you somewhere in the ballpark.

我不是百分之百的肯定,但我相信它会让你在这个问题上有所收获。

dtf <- structure(list(nutr = structure(c(2L, 2L, 1L, 1L, 2L, 2L, 
1L, 1L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 1L), .Label = c("bad", "good"
), class = "factor"), fert = structure(c(2L, 1L, 2L, 1L, 2L, 
1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L), .Label = c("N", 
"0"), class = "factor"), id = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 
10, 11, 12, 13, 14, 15, 16), t0 = c(7, 6, 3, 20, 13, 4, 14, 9, 
15, 5, 18, 19, 8, 1, 10, 16), t1 = c(12, 9, 3, 20, 4, 7, 6, 17, 
19, 5, 18, 8, 15, 16, 10, 2), t2 = c(12, 9, 3, 20, 4, 7, 6, 17, 
7, 6, 3, 20, 13, 4, 14, 9), t3 = c(15, 5, 18, 19, 8, 1, 10, 16, 
4, 7, 6, 17, 7, 6, 3, 20), t4 = c(6, 7, 12, 4, 7, 18, 9, 10, 
2, 10, 11, 14, 15, 1, 14, 16), t5 = c(4, 7, 6, 17, 7, 6, 3, 20, 
15, 5, 18, 19, 8, 1, 10, 16), t6 = c(70, 5, 16, 31, 61, 14, 22, 
23, 80, 13, 24, 32, 90, 16, 28, 29), t7 = c(56, 16, 7, 8, 78, 
26, 28, 30, 91, 5, 8, 19, 67, 16, 18, 19), t8 = c(88, 21, 20, 
19, 90, 16, 18, 19, 57, 3, 20, 4, 7, 67, 13, 12), t9 = c(62, 
12, 15, 27, 71, 20, 4, 7, 72, 6, 3, 20, 73, 14, 9, 15), t10 = c(40, 
13, 7, 19, 50, 3, 20, 7, 66, 14, 9, 15, 80, 16, 18, 19)), .Names = c("nutr", 
"fert", "id", "t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7", 
"t8", "t9", "t10"), row.names = c(NA, -16L), class = "data.frame")

# Need to reshape into long format so that each column is a separate variable
library(reshape2)

dtf.long <- reshape2::melt(dtf, id.vars=1:3, variable.name="time")
dtf.long$time <- as.integer(sub("t", "", dtf.long$time))
dtf.long$fert2 <- dtf.long$time > 5 & dtf.long$fert == "N"

library(lattice)
xyplot(value ~ time | nutr * fert, data=dtf.long )

library(lme4)
m1.1 <- lmer(value ~ nutr * fert2 * time + (1 | id), dtf.long, REML=FALSE)
m1.2 <- lmer(value ~ nutr * fert2 * time + (1 + time | id), dtf.long, REML=FALSE)

# The random slope term doesn't appear to be adding anything of value
anova(m1.1, m1.2)

These slides on longitudinal modelling in lme4 might be of use.

这些关于lme4纵向建模的幻灯片可能有用。

#2


1  

From what I know, that error message means your predictors don't have enough information for your desired model to run. Perhaps you should consider using an ANOVA or ANCOVA with a block? It would be totally fine to go this route considering the experimental nature of your data. You should also create a new column with your treatment groups. For example good nutrition w/ fertilizer, good nutrition w/o fertilizer can be called GWF and GWOF, same goes with the bad nutrition combos. This would give you 4 treatments and your block could be "time".

据我所知,错误消息意味着您的谓词没有足够的信息来运行所需的模型。也许你应该考虑使用一个带块的ANOVA或ANCOVA ?考虑到数据的实验性质,这样做完全没问题。您还应该与您的治疗组创建一个新的列。例如,好的营养w/肥料,良好的营养w/o肥料可以被称为GWF和GWOF,同样与营养不良组合。这将给你4种治疗方法,你的阻滞可能是“时间”。

Posting a sample of your dataset would help in solving your problem

发布数据集的示例将有助于解决您的问题


推荐阅读
author-avatar
Ymgif影像--阿雅XX_506
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有