【发布时间】:2026-01-21 18:50:01
【问题描述】:
我正在尝试进行单变量逻辑回归分析。输入是一个数据框,其中包含 1 个响应变量、一些人口统计数据(年龄、性别和种族)和 >100 个预测变量。为了分析它,我一直在使用:
#Function
proc_glm <- function(predictors) {
univariate <- glm(Data$Outcome ~ predictors, family = binomial)
return(cbind(coef(summary(univariate)),OR = exp(coef(univariate)), exp(confint(univariate))))
}
#Call Function
glm_output <- lapply(Data[5:150], proc_glm)
这在整个数据库上工作得很好。然后,我根据种族对数据进行了子集化,我使用的是:
Data1 <- subset(Data,Ethnicity==0)
没有明显问题; “数据 1”的行数比“数据”少,但变量数相同。没有缺失数据。
然后我尝试运行与以前相同的分析,在两个地方都将 Data1 替换为 Data,但我收到以下错误:
cbind(coef(summary(univariate)), OR = exp(coef(univariate)) 中的错误: 矩阵的行数必须匹配(参见参数 3)
我不确定我所做的更改会导致错误。 我正在开发 R Studio - 版本 1.2.1335
数据如下所示:
Data <-cbind(
data.frame(
Age=sample(20:80,50),
Gender=sample(0:1,size=50,replace=TRUE),
Ethnicity=sample(0:2,size=50,replace=TRUE),
Outcome=sample(0:1,size=50,replace=TRUE)
),
data.frame(replicate(100,sample(0:2,50,rep=TRUE)))
)
【问题讨论】:
-
你是重新运行整个thiniig还是只运行这一行
glm_output <- lapply(Data1[5:150], proc_glm)? -
我重新运行了所有内容。
-
如果你创建另一个名为
proc_glm1的函数然后尝试,你仍然得到错误吗? -
您能否向我们展示您的一些数据或创建一个测试数据框以供我们试用您的代码?将有助于了解正在发生的事情。
-
同样的错误 - 忽略我之前的回复。我错过了一项更改,因此它试图调用原始公式。