Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何使用mvJointModelBayes()修复不兼容的矩阵维度?_R - Fatal编程技术网

R 如何使用mvJointModelBayes()修复不兼容的矩阵维度?

R 如何使用mvJointModelBayes()修复不兼容的矩阵维度?,r,R,我正试图使用JMbayes软件包拟合纵向和事件时间数据的联合模型,以预测随着时间推移越来越多的症状数据可用,心脏骤停的风险。首先,我正在拟合一个单变量模型,但我的目标是在代码运行后合并一些纵向结果,这就是我使用mvJointModelBayes()函数的原因 然而,当我运行这个函数时,我遇到了下面的错误 {中的错误: 任务1失败-“添加:不兼容的矩阵维度:500x1和3000x1” 我使用的代码与mvJMBayes vignette中使用pbc2数据提供的代码相同,适用于我的数据集,但不断遇到错

我正试图使用JMbayes软件包拟合纵向和事件时间数据的联合模型,以预测随着时间推移越来越多的症状数据可用,心脏骤停的风险。首先,我正在拟合一个单变量模型,但我的目标是在代码运行后合并一些纵向结果,这就是我使用mvJointModelBayes()函数的原因

然而,当我运行这个函数时,我遇到了下面的错误

{中的错误: 任务1失败-“添加:不兼容的矩阵维度:500x1和3000x1”

我使用的代码与mvJMBayes vignette中使用pbc2数据提供的代码相同,适用于我的数据集,但不断遇到错误。我找不到任何明显的方式,使我的数据帧与pbc2数据集不同,从而导致错误

library(tidyverse)
library(JMbayes)
library(lattice)
library(MASS)

# SIMULATE DATA AND SHAPE FOR MODELLING -------------------

id            <- 1:500
gender        <- sample(c('Male','Female'), 500, replace = TRUE, prob = c(0.51, 0.49))
status        <- sample(c(0,1), 500, replace = TRUE, prob = c(0.9, 0.1))
survival_days <- rnorm(500)

angina1 <- sample(c(0,1), 500, replace = TRUE, prob = c(0.9, 0.1))
angina2 <- sample(c(0,1), 500, replace = TRUE, prob = c(0.8, 0.2))
angina3 <- sample(c(0,1), 500, replace = TRUE, prob = c(0.7, 0.3))

# Wide format for survival modelling. Single row per patient.
data_wide <- as.data.frame(
  cbind(id, gender, status, survival_days, angina1, angina2, angina3))

# Recode factor levels
data_wide$survival_days<- as.numeric(data_wide$survival_days)
data_wide$status       <- as.numeric(data_wide$status)

# Long format for longitudinal modelling. 
data_long <- data_wide %>% gather(angina1:angina3, key = "timepoint", value = "angina")
data_long$timepoint <- str_replace(data_long$timepoint,"angina","")
data_long <- data_long %>% mutate(angina = as.factor(angina), timepoint = as.numeric(timepoint))

# MODELLING ---------------------------------------------------

set.seed(123)
mixed_model_fit <- mvglmer(list(angina ~ timepoint + (timepoint | id)), data = data_long, families = list(binomial))
cox_fit <- coxph(Surv(survival_days, status) ~ gender, data = data_wide, model = TRUE)
JMFit <- mvJointModelBayes(mixed_model_fit, cox_fit, timeVar = "timepoint")
库(tidyverse)
图书馆(JMbayes)
图书馆(格子)
图书馆(弥撒)
#为建模模拟数据和形状-------------------

id我发现,如果
id
是一个数值变量而不是一个因子,并且
id
在两个数据集中以相同的顺序出现,那么它是有效的。在模型拟合之前运行以下代码可以解决问题:

data_long <- data_long %>% 
  mutate(id = as.numeric(id)) %>% 
  arrange(id)

data_wide <- data_wide %>% 
  mutate(id = as.numeric(id)) %>% 
  arrange(id)
数据长度%
变异(id=as.numeric(id))%>%
安排(id)
数据范围%
变异(id=as.numeric(id))%>%
安排(id)

我发现,如果
id
是一个数值变量而不是一个因子,并且
id
在两个数据集中以相同的顺序出现,则该方法有效。在模型拟合之前运行以下代码可以解决此问题:

data_long <- data_long %>% 
  mutate(id = as.numeric(id)) %>% 
  arrange(id)

data_wide <- data_wide %>% 
  mutate(id = as.numeric(id)) %>% 
  arrange(id)
数据长度%
变异(id=as.numeric(id))%>%
安排(id)
数据范围%
变异(id=as.numeric(id))%>%
安排(id)

我很确定您需要添加更多的库调用以使其可复制。不过,这听起来是一个很好的问题。我不知道仅仅添加
library(maggitr)
就足够了,还是您需要同时加载
dplyr
还是需要整个
tidyverse
套件。(我可以观察到安装
JMbayes
需要很长时间,如果尚未安装,则需要额外的系统级软件包。)现在我已经尝试过两次,一次是在Rstudio会话中,一次是在终端会话中,两次我都只是看到会话挂起。这在另一个Linux用户的体验中被指责为一个问题:但软件包维护人员无法复制。我没有看到使用htop进程监视器识别为R的正在进行的活动。我第二次首先加载tidyverse,然后加载上面列出的包,行为没有任何差异。看起来我引用的问题已经解决。有一条打开的消息,其中包含与pbc2数据集的矩阵错误相关的不同错误:Thank@42-,我缺少库(tidyverse)调用。我非常确定您需要添加更多的库调用以使其可复制。不过,这听起来是一个很好的问题。我不知道仅仅添加
library(maggitr)
是否就足够了,或者您是否还需要加载
dplyr
或者它需要整个
tidyverse
套件。(我可以观察到安装
JMbayes
需要很长时间,如果尚未安装,则需要额外的系统级软件包。)现在我已经尝试过两次,一次是在Rstudio会话中,一次是在终端会话中,两次我都只是看到会话挂起。这在另一个Linux用户的体验中被指责为一个问题:但软件包维护人员无法复制。我没有看到使用htop进程监视器识别为R的正在进行的活动。我第二次首先加载tidyverse,然后加载上面列出的包,行为没有任何差异。看起来我引用的问题已经解决。有一条打开的消息与pbc2数据集的矩阵错误相关:Thank@42-,我错过了库(tidyverse)调用。