我得到了一个如下所示的R代码,以找出最后一行中Y的值,每次运行它时,R将给出100个Y值,因为我将N = 100设置为模拟的开始。 ..
我将模拟它500次以找到500个Y系列。每个模拟包含100个Y值。因此,我希望获得类似500行模拟的矩阵,每行包含100个Y值。我想for循环会有所帮助,但我没弄明白该怎么做?有人可以帮忙吗?非常感谢!!!!!!
N = 100
# set up initial values
alpha1 = 8.439e-02
beta1 = 8.352e-01
mu = 7.483e-03
omega = 1.343e-04
X_0 = -3.092031e-02
sigma_0 = 0.03573968
eps = rt (N,7.433e+00)
# loops
Xn= numeric (N)
sigma= numeric (N)
sigma[1] = sigma_0
Xn[1] = X_0
for (t in 2:N){
sigma[t] = sqrt (omega + alpha1 * (Xn[t-1])^2 + beta1* (sigma[t-1])^2)
Xn[t] = sigma[t] * eps[t]
}
Y = mu + Xn
head(Y)
答案 0 :(得分:1)
将所有内容放入函数getY <- function(N) { ... }
并使用replicate(500, getY(100))
。所以你可以这样做:
getY <- function(N) {
# set up initial values
alpha1 <- 8.439e-02
beta1 <- 8.352e-01
mu <- 7.483e-03
omega <- 1.343e-04
X_0 <- -3.092031e-02
sigma_0 <- 0.03573968
eps <- rt(N, 7.433e+00)
# loops
Xn <- numeric (N)
sigma <- numeric (N)
sigma[1] <- sigma_0
Xn[1] <- X_0
for (t in 2:N) {
sigma[t] <- sqrt (omega + alpha1 * (Xn[t-1])^2 + beta1* sigma[t-1])^2)
Xn[t] <- sigma[t] * eps[t]
}
Y <- mu + Xn
}
X <- replicate(500, getY(100))
如果需要,可以使用t()
转置结果,即
X <- t(replicate(500, getY(100)))