回归比例(作为因变量和自变量)的最佳方法是什么?

机器算法验证 回归 部分 元回归
2022-04-10 18:27:21

我目前正在进行一项荟萃分析,并汇总了某种疾病的患病率。我想检查风险因素与所述流行率的任何关联,例如性别、种族和疾病分类(我将所有输入作为比例)。请问什么是最好的前进方式?

1个回答

假设我们有一个模型,例如

y=x

其中是多个样本中的一些测量值。现在,如果我们引入第三个变量,例如每个样本中的受试者数量或每个人口的大小,并且我们希望形成另一个模型来处理比例,我们可以有模型yxz

yz=xz

现在应该很明显,由于出现在两侧的分母中,因此两侧是“耦合的”,因此称为数学耦合。z

R 中的一个简单示例可以说明这一点。为简单起见,我们独立地从标准正态分布中模拟三个变量:

> set.seed(1)
> x <- rnorm(100)
> y <- rnorm(100)
> cor(x,y)
[1] -0.0009943199

...因此相关性接近于零。或者在线性回归中:

> summary(lm(y~x))

Call:
lm(formula = y ~ x)

Residuals:
    Min      1Q  Median      3Q     Max 
-1.8768 -0.6138 -0.1395  0.5394  2.3462 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.03769    0.09699  -0.389    0.698
x           -0.00106    0.10773  -0.010    0.992

Residual standard error: 0.9628 on 98 degrees of freedom
Multiple R-squared:  9.887e-07, Adjusted R-squared:  -0.0102 
F-statistic: 9.689e-05 on 1 and 98 DF,  p-value: 0.9922

所以估计值接近于零,R^2 也是如此。

现在我们引入第三个变量:

> z <- rnorm(100)
> cor(x/z, y/z)
[1] 0.9168795

突然之间相关性超过了 0.9。或回归:

> summary(lm(I(y/z) ~ I(x/z)))

Call:
lm(formula = I(y/z) ~ I(x/z))

Residuals:
    Min      1Q  Median      3Q     Max 
-45.996  -4.733  -2.784  -1.524 214.929 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  2.74090    2.53884    1.08    0.283    
I(x/z)       1.44965    0.06375   22.74   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 25.35 on 98 degrees of freedom
Multiple R-squared:  0.8407,    Adjusted R-squared:  0.839 
F-statistic: 517.1 on 1 and 98 DF,  p-value: < 2.2e-16

...并且斜率的估计值高于零,p 值非常小,R^2 为 0.8407,即 0.9168795^2

值得注意的是,这个例子是相当极端的,因为所有的变量都是标准正态的,这引起了最大可能的数学耦合效应。当变量在不同的尺度、不同的方差、不同的类型或相互关联时,数学耦合的影响不那么明显,但仍然存在。

因此,在处理比例时建议格外小心。