我正在尝试在下面实现此模型:
但是由于所有Z和Us,我的代码非常混乱,我在寻找一些编码技巧,以使我的代码尽可能简短。
model = function(N,t1,t2){
Z1 = rnorm(N,0,1)
Z2 = rnorm(N,0,1)
Z3 = rnorm(N,0,1)
Z4 = rnorm(N,0,1)
U1 = runif(N,0,1)
U2 = runif(N,0,1)
T = (U2+t2*U1)/(1+t2)
X1 = (Z1+t1*U1)/(1+t1)
X2= (Z2+t1*U1)/(1+t1)
X3= (Z3+t1*U1)/(1+t1)
X4= (Z4+t1*U1)/(1+t1)
eps = rnorm(100,0,1)
Y = 2*X1 + 3*T*X2 + X3*(T+1)^2+ 4*X4*sin(2*pi*T)/(2-2*sin(2*pi*T))+eps
X = cbind(X1,X2,X3,X4)
return(list(X = X, Y = Y))}
也许下面的代码简化了一点
model = function(N,t1,t2){
Z <- matrix(rnorm(4*N),nrow = N)
U <- matrix(runif(2*N),nrow = N)
W <- tcrossprod(U, rbind(c(t2, 1))) / (1+t2)
X <- (Z + t1*U[,1])/(1+t1)
eps <- rnorm(N)
M <- cbind(2,3*W,(W+1)**2,4*sin(2*pi*W)/(2-sin(2*pi*W)))
Y <- M*X + eps
return(list(X = X, Y = Y))
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句