fofoever 2024-06-28 20:19 采纳率: 0%
浏览 6
已结题

关于R语言单因素与多因素线性回归的平均值

在单因素线性回归分析中,PPI的使用与LDL的平均值(±SE)升高相关(3.4±3.2 mg/dL;P= 0.301)。在多因素线性回归分析中,PPI的使用与空腹LDL显著升高相关(11.7±3.4 mg/ dL;P=0.006)。PPI使用者的平均LDL为125.0 mg/dL,而非PPI使用者的平均LDL为113.3 mg/dL。
我理解的单因素分析的平均值是直接使用mean();多因素分析的平均值我使用的是predict(),
代码如下:

dummy_data1 <- model.matrix(~ Race * Education * Gender * Smoking * Drinking - 1, data = TABLE_a2)

dummy_data1_df <- data.frame(dummy_data1)
dummy_data1_df$VitB12 <- TABLE_a2$VitB12
dummy_data1_df$Age <- TABLE_a2$Age

model1 <- lm(VitB12 ~ Age + ., data = dummy_data1_df)


TABLE_a2$Race <- as.factor(TABLE_a2$Race)
TABLE_a2$Education <- as.factor(TABLE_a2$Education)
TABLE_a2$Gender <- as.factor(TABLE_a2$Gender)
TABLE_a2$Smoking <- as.factor(TABLE_a2$Smoking)
TABLE_a2$Drinking <- as.factor(TABLE_a2$Drinking)

combinations1 <- expand.grid(
  Race = levels(TABLE_a2$Race),
  Education = levels(TABLE_a2$Education),
  Gender = levels(TABLE_a2$Gender),
  Smoking = levels(TABLE_a2$Smoking),
  Drinking = levels(TABLE_a2$Drinking)
)

combinations1 <- cbind(combinations1, model.matrix(~ . - 1, data = combinations1))
combinations1$Age <- 53

combinations1$predicted_mean <- predict(model1, newdata = combinations1)


运行到此步时,出现以下错误


```r

Error in eval(predvars, data, env) : 
  object 'RaceNon_Hispanic_Black.EducationLess_than_high_school' not found

请问我的思路是正确的吗?这个代码到底是哪里出问题了呢?


  • 写回答

29条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-06-28 20:19
    关注
    获得0.30元问题酬金

    引自免费微信小程序:皆我百晓生

    你的思路大致正确,但在构建模型和使用predict()函数时遇到了一些问题。让我们一步步来分析并解决这些问题。

    首先,关于单因素与多因素线性回归的平均值计算,通常我们会使用基础的R语言函数来计算。对于单因素分析,我们可以直接使用mean()函数计算平均值。对于多因素分析,在建立了多元线性回归模型后,可以使用predict()函数结合新数据集来预测平均值。但是,你的代码中存在一些问题。

    关于你提到的错误:“Error in eval(predvars, data, env) : object 'RaceNon_Hispanic_Black.EducationLess_than_high_school' not found”,这个错误通常发生在predict()函数试图在一个不存在的对象上进行操作时。在你的代码中,这个错误可能是由于model1没有正确地包含所有你想要预测的因素。

    让我们重新整理一下代码。首先,确保你的模型包含了所有你想要分析的因素。然后,创建一个新数据集来预测平均值。你可以使用expand.grid()来生成所有可能的组合,并使用这个数据集来预测平均值。下面是修正后的代码示例:

    # 构建单因素模型(以PPI为例)
    modelPPI <- lm(LDL ~ PPI, data = TABLE_a)  # 假设TABLE_a是你的数据集,并且包含PPI和LDL变量
    
    # 构建多因素模型(包括所有相关因素)
    modelMulti <- lm(LDL ~ PPI + 其他相关因素, data = TABLE_a)  # 根据你的数据替换“其他相关因素”
    
    # 创建新数据集来预测平均值
    newdata <- expand.grid(PPI = c("Yes", "No"), 其他相关因素 = your_levels)  # 根据你的数据替换"your_levels"
    newdata$Age <- 53  # 如果你想要基于特定的年龄进行预测
    newdata$PredictedLDL <- predict(modelMulti, newdata = newdata)  # 使用多因素模型预测LDL的平均值
    

    这样你就可以得到基于不同因素组合的LDL预测平均值了。对于单因素模型,你也可以用同样的方法来预测平均值。但是需要注意的是,单因素模型中只有一个主要变量(例如PPI),而其他变量(如年龄等)可能会被忽略。因此,在进行单因素和多因素分析时,请确保你理解了每个模型的局限性。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 7月6日
  • 创建了问题 6月28日