生成具有预定义的偏相关结构的模拟数据

机器算法验证 数据集 模拟 随机生成 教学
2022-04-10 03:43:53

我教统计学(本科水平)。这是一门统计入门课程,非常基础。我发现为学生创建训练数据非常耗时。

我用公式X3=(r×X1)+((1r2)×X2创建具有不同相关程度的数据。使用这个方程,我将得到两个变量X3X2具有相关系数的是r(由我选择)。X1X2是两个随机生成的变量(均值相同,标准差)。到目前为止没有问题。

有谁知道如何轻松创建数据之间的相关性XY可以通过添加变量来控制Z? 通常我想给学生一个任务,比如;首先做一个回归分析XY,解释结果。然后加Z(多变量分析)。是否影响XY控制时改变Z. (Z通常是中介或混杂因素)

我想要完成的是数据之间的关系XY当学生添加时消失(完全或部分)Z. 有人有一个简单的方法来创建这样的数据的智能解决方案吗?

1个回答

为什么不按照因果模型创建数据?如果模型是XZY,然后只是创建随机Z, 并构建X作为一些功能Z加上噪音(对于Y)。(我留下了错误 SD=1,但只是将其设置得更高以获得更现实的意义。)

> set.seed(100)
> z = rnorm(500)
> x = z + rnorm(500, 0, 1)
> y = z + rnorm(500, 0, 1)

在不受控制的模型中,您将获得之间的虚假关联XY, 按照要求:

> summary(lm(y ~ x))    
Call:
lm(formula = y ~ x)

Residuals:
    Min      1Q  Median      3Q     Max 
-3.1534 -0.8674  0.0423  0.8893  4.0521 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -0.06574    0.05513  -1.192    0.234    
x            0.49819    0.03809  13.081   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.233 on 498 degrees of freedom
Multiple R-squared:  0.2557,    Adjusted R-squared:  0.2542 
F-statistic: 171.1 on 1 and 498 DF,  p-value: < 2.2e-16

X适当控制后消失:

> summary(lm(y ~ x + z))

Call:
lm(formula = y ~ x + z)

Residuals:
     Min       1Q   Median       3Q      Max 
-3.03113 -0.70603  0.04694  0.62110  2.89843 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -0.01238    0.04464  -0.277    0.782    
x            0.02431    0.04228   0.575    0.566    
z            0.99553    0.06095  16.334   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.9952 on 497 degrees of freedom
Multiple R-squared:  0.5157,    Adjusted R-squared:  0.5138 
F-statistic: 264.6 on 2 and 497 DF,  p-value: < 2.2e-16