R 中的模拟数据集

Simulated dataset in R

我在这里模拟另一个数据集,又卡住了!

这是我想要做的:

200 个观测值,90 个自变量(平均值 0,标准差 1)

创建 y 的方程是:y = 2x_1 + ... + 2x_30 - x_31 - ... - x_60 + 0*x_61 + ... + 0*x_90 + 亩 (换句话说,前 30 个 x 值的系数为 2,接下来的 30 个值的系数为 -1,最后 30 个值的系数为 0)。 mu 也是随机生成的正态变量,均值为 0,标准差为 10。

这是我目前的情况:

set.seed(11)
n <- 200
mu <- rnorm(200,0,10)
p1 <- for(i in 1:200){
   rnorm(200,0,1)
       }
p2 <- cbind(p1)
p3 <- for(i in 1:90){
   if i<=30, y=2x
      if i>30 & i<=60, y=-x
         if i>60 & i<=90, y=0x
             }

我仍在学习 R 的许多方面,所以我很确定代码有很多错误,即使在语法方面也是如此。非常感谢您的帮助!

谢谢!

尝试

library(mvtnorm)
coefs <- rep(c(2, -1, 0), each=30)
mu <- rnorm(200, 0, 10)
m <- rep(0, 90) # mean of independent variables
sig <- diag(90) # cov of indep variables
x <- rmvnorm(200, mean=m, sigma=sig) # generates 200 observations from multivariate normal 
y <- x%*%coefs + mu

以防万一,如果你不熟悉线性代数

n <- 200
coefs <- rep(c(2, -1, 0), each=30)
mu <- rnorm(n, 0, 10)
x <- matrix(nrow=n, ncol=90) # initializes the indep.vars
for(i in 1:90){
  x[, i] <- rnorm(200, 0, 1)
}
y <- rep(NA, n) # initializes the dependent vars
for(i in 1:n){
  y[i] = sum(x[i,]*coefs) + m[i]
}

x[i,]*coefs 正好给出 (2*x_1,..., 2*x_30, -x_31,...,- x_60,0*x_61,...,0*x_90) 因为 * 是逐元素操作。

在实际使用它之前,您最好学习 R 的基础知识。