Qiaquq 2025-01-06 19:24 采纳率: 0%
浏览 67

多变量孟德尔随机化分析

用R语言做多变量孟德尔随机化分析,做到MRMV_IVW这步时
变量的长度不一样('Bx')

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)

报错:错误于model.frame.default(formula = By ~ Bx - 1, weights = Byse^(-2), : 变量的长度不一样('Bx')
alcohol和smoke这个两个暴露文件如下:

img

img

  • 写回答

4条回答 默认 最新

  • 檀越@新空间 2025-01-06 19:25
    关注

    晚上好🌙🌙🌙
    本答案参考通义千问

    在进行多变量孟德尔随机化(Multivariable Mendelian Randomization, MVMR)分析时,如果遇到变量长度不一致的问题,通常是因为不同数据集中的样本数量不一致。为了确保分析的正确性,你需要确保所有输入数据集中的样本数量相同,并且这些样本是对应相同的个体。

    以下是解决这个问题的步骤:

    1. 检查数据集样本数量: 确认alcoholsmokeindex数据集中样本的数量是否相同。如果不相同,则需要找到共同的样本。

    2. 筛选共同样本: 使用相同标识符(如个体ID)来筛选两个数据集中的共同样本。

    3. 确保数据集对齐: 确保所有输入数据集中的样本顺序是一致的。

    4. 重新构建输入对象: 使用筛选后的数据重建输入对象。

    下面是具体的代码实现:

    # 加载必要的库
    library(data.table)
    
    # 假设每个数据集都有一个唯一的标识符(例如,个体ID)
    # 这里我们假设个体ID存储在名为'ID'的列中
    
    # 将数据转换为data.table格式以便高效处理
    alcohol <- as.data.table(alcohol)
    smokeindex <- as.data.table(smokeindex)
    migraine_Y <- as.data.table(migraine_Y)
    
    # 找到共同的样本ID
    common_ids <- intersect(alcohol$ID, smokeindex$ID)
    
    # 筛选共同的样本
    alcohol <- alcohol[ID %in% common_ids]
    smokeindex <- smokeindex[ID %in% common_ids]
    
    # 确保数据集按ID排序
    setkey(alcohol, ID)
    setkey(smokeindex, ID)
    
    # 重新构建输入对象
    MRMVInputObject <- mr_mvinput(
      bx = cbind(alcohol$BETA, smokeindex$BETA),
      bxse = cbind(alcohol$SE, smokeindex$SE),
      by = migraine_Y$BETA,
      byse = migraine_Y$SE
    )
    
    # 运行MVMR IVW模型
    MRMV_IVW <- mr_mvivw(
      MRMVInputObject,
      model = "default",
      correl = FALSE,
      distribution = "normal",
      alpha = 0.05
    )
    
    # 输出结果
    print(MRMV_IVW)
    

    通过上述步骤,你可以确保所有输入数据集中的样本数量一致,并且这些样本对应相同的个体。这样可以避免在运行MVMR IVW模型时出现“变量的长度不一样”的错误。

    评论

报告相同问题?

问题事件

  • 创建了问题 1月6日