Qiaquq 2025-01-07 22:22 采纳率: 0%
浏览 47

多变量孟德尔随机化分析

用R语言做多变量孟德尔随机化分析,用下面的代码提取暴露和结局共同的列时,显示:

img

combined_data <- merge(alcohol, smokeindex, by = "SNP")  # Keep only common rows
combined_data <- merge(combined_data, migraine_Y, by = "SNP")

于是我换了一个代码,加了一个“all = TRUE”,conbied_data有数据了,但有缺失值

img

然后我继续做下一步:alcohol <- alcohol[alcohol$SNP %in% combined_data$SNP,]
smokeindex <- smokeindex[smokeindex$SNP %in% combined_data$SNP,]
migraine_y <- migraine_Y[migraine_Y$SNP %in% combined_data$SNP,]
发现这三个数据的行数仍没有一致,之后做到MRMV_IVW这步时,还是报错:错误于model.frame.default(formula = By ~ Bx - 1, weights = Byse^(-2), : 变量的长度不一样('Bx'),请问该怎么解决呢

#------将唯一SNP和第一个,第二个暴露因素合并------
alcohol<-merge(uni_snp,Alcohol,by="SNP")
smokeindex<-merge(uni_snp,Smokeindex,by="SNP")

#------将唯一SNP和结局合并------
migraine_Y<-merge(uni_snp,migraine,by="SNP")

# Assuming each dataset has a common column 'SNP' for identification
combined_data <- merge(alcohol, smokeindex, by = "SNP", all = TRUE)  # Keep only common rows
combined_data <- merge(combined_data, migraine_Y, by = "SNP", all = TRUE)

alcohol <- alcohol[alcohol$SNP %in% combined_data$SNP,]
smokeindex <- smokeindex[smokeindex$SNP %in% combined_data$SNP,]
migraine_y <- migraine_Y[migraine_Y$SNP %in% combined_data$SNP,]

# 重新生成MRMVInputObject
MRMVInputObject <- mr_mvinput(bx = cbind(alcohol$BETA,smokeindex$BETA),
                              bxse = cbind(alcohol$SE,smokeindex$SE),
                              by = migraine_y$BETA,
                              byse = migraine_y$SE)

# 再次运行MRMV_IVW
MRMV_IVW <- mr_mvivw(MRMVInputObject,
                     model = "default",
                     correl = FALSE,
                     distribution = "normal",
                     alpha = 0.05)
  • 写回答

2条回答 默认 最新

  • 道友老李 JWE233286一种基于机器视觉的水表指针读数识别及修正的方法 专利发明者 2025-01-07 22:35
    关注
    让【道友老李】来帮你解答,本回答参考gpt编写,并整理提供,如果还有疑问可以点击头像关注私信或评论。
    如果答案让您满意,请采纳、关注,非常感谢!
    问题出在提取数据时,并没有考虑到数据的长度不一致造成的问题。在合并数据之后,需要确保三个数据集(alcohol,smokeindex和migraine_Y)的行数是一致的,才能继续进行后续的分析。 为解决这个问题,可以采取以下步骤:
    1. 在合并数据之后,检查数据集的行数是否一致,如果不一致则需要进一步处理。
    2. 对于缺失数据的处理,可以选择删除包含缺失值的行或者填充缺失值。
    3. 确保提取的数据集中,每个变量的长度都是一致的。 修正后的代码如下:
    # 确保数据行数一致
    combined_data <- merge(alcohol, smokeindex, by = "SNP", all = TRUE)
    combined_data <- merge(combined_data, migraine_Y, by = "SNP", all = TRUE)
    # 根据SNP筛选数据,确保行数一致
    alcohol <- alcohol[alcohol$SNP %in% combined_data$SNP,]
    smokeindex <- smokeindex[smokeindex$SNP %in% combined_data$SNP,]
    migraine_Y <- migraine_Y[migraine_Y$SNP %in% combined_data$SNP,]
    # 继续进行多变量孟德尔随机化分析
    MRMVInputObject <- mr_mvinput(bx = cbind(alcohol$BETA, smokeindex$BETA),                              
                                  bxse = cbind(alcohol$SE, smokeindex$SE),                              
                                  by = migraine_Y$BETA,                              
                                  byse = migraine_Y$SE)
    MRMV_IVW <- mr_mvivw(MRMVInputObject,                     
                         model = "default",                     
                         correl = FALSE,                     
                         distribution = "normal",                     
                         alpha = 0.05)
    

    通过以上修正,应该能避免上述报错并顺利进行多变量孟德尔随机化分析。

    评论

报告相同问题?

问题事件

  • 创建了问题 1月7日