gpt4 book ai didi

r - 混合效果模型代码: “(p <- ncol(X)) == ncol(Y) is not TRUE” and “variable lengths differ” 中的错误

转载 作者:行者123 更新时间:2023-12-03 07:56:07 26 4
gpt4 key购买 nike

我对R编码非常陌生,并且正在尝试首次运行混合效果模型。我的模型旨在调查一段时间内某个物种的种群趋势对另一物种的种群趋势的影响(以年为固定影响),而状态为随机影响(因为数据是按州报告的,但我只看大陆效应)。
这是我的数据设置的摘要(称为IGP的表):

 species  state Count_yr    population_value
1 A AL 1970 0.1615
2 B AL 1970 0.1981
3 C AL 1970 0.2162
4 A KY 1971 0.2096
5 B KY 1971 0.2118
6 C KY 1971 0.2784
我对数据进行了子集划分,以保持所有三个种类分离(A的1个子集,B的1个子集,C的1个子集),如下所示:
A <- subset(IGP, IGP$species=="A")
B <- subset(IGP, IGP$species=="B")
C <- subset(IGP, IGP$species=="C")
对于仅关注一个物种的线性模型,一切工作正常:
Alm <- lm(A$population_value ~ A$Count_yr+A$state)
但是当对所有3种物种进行混合效果模型时,事情都会变得繁琐
合并:
lmer<-lmer(A$population_value ~ B$Count_yr*B$population_value + 
C$Count_yr*C$population_value + (1|state)
首先,我遇到“可变长度不同”错误,因此我进去并手动添加了多年来和/或没有该物种之一数据值的州的NA。我检查以确保所有年份具有相同数量的数据点,并且所有州均具有相同数量的数据点,因此我认为在那之后没有问题。
但是,一旦添加了NA,便开始出现错误“((p <-ncol(X))== ncol(Y)不是TRUE””,这似乎是由于因子列中包含NA值所致。在其他帖子上没有提出建议时,我使用了na.omit来解决此问题,但随后又遇到了“可变长度不同”错误(似乎是一个无休止的循环,我尚不知道如何解决)。
如果有人能指导我如何进行,我将万分感谢!我对统计数据或编码不是很了解,所以请告诉我是否有其他我可以添加到帖子中的信息,以使事情更清楚。提前致谢!

最佳答案

我认为您应该将数据从长格式转换为宽格式。 tidyr::pivot_wider()是执行此操作的一种方法(但还有其他方法,例如,基数R中的reshapeplyr::melt()/cast())。
长格式的样本数据:

dd <- expand.grid(species=c("A","B","C"),
state=c("AL","KY","TN"),
Count_yr=1970:1974)
set.seed(101)
dd$pop <- rnorm(nrow(dd))
转换为宽:
ddw <- tidyr::pivot_wider(dd, id_cols=c(state,Count_yr), 
names_from=species, values_from=pop,
names_prefix="pop_")
names(ddw)
## [1] "state" "Count_yr" "pop_A" "pop_B" "pop_C"
合适型号:
library(lme4)
lmer(pop_A ~ scale(Count_yr)*(pop_B+pop_C) + (1|state), data=ddw)

关于r - 混合效果模型代码: “(p <- ncol(X)) == ncol(Y) is not TRUE” and “variable lengths differ” 中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65174967/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com