使用循环在 R 中生成模拟数据
generating simulated data in R with loop
我正在尝试模拟稍后将继续使用的数据集。我需要创建一个包含 1000 个观测值 (n=1000) 的变量,其中每个观测值都是前一个观测值的函数,公式如下:yt 是 80% yt-1 + 20% 随机噪声,均值为 0,sd 为 1。此外, y1 = 1 的值。
这是我目前的代码(它运行了,但只提供了 1000 个 1 而没有其他值。因此,它没有正确生成数据,我不知道为什么...):
n <- 1000
i <- rnorm(n=1000, mean=0, sd=1)
data <- rep(1,1000);
for(i in 2:1000){
y[i]=0.80*y[i-1] + 0.20*rnorm(1)
}
data
感谢任何有关此代码的建议或帮助!
谢谢!
您还没有实例化 y
向量,只需将 data
更改为 y
就可以了。这就是全部:
y <- rep(1,1000);
for(i in 2:1000){
y[i]=0.80*y[i-1] + 0.20*rnorm(1)
}
y
只是为了提供一个替代方案,您可以使用 Rcpp 来执行此操作。当您需要计算这些类型的序列时,Rcpp 通常是一个不错的选择,因为在编译代码中循环比在 R 代码中循环更有利于性能。
cppFunction('
DoubleVector gensim(int n=1000, double mean=0, double sd=1 ) {
DoubleVector res(n);
double* resp = REAL(res);
resp[0] = 1;
for (int i = 1; i < n; ++i)
resp[i] = 0.80*resp[i-1] + 0.20*Rf_rnorm(mean,sd);
return res;
}
');
gensim();
## [1] 1.0000000000 0.8083990372 0.6281932260 0.8158159737 0.4193451426
## [6] 0.2963336105 0.1500730564 -0.0251075339 -0.0990122044 -0.0497148910
## ...
我正在尝试模拟稍后将继续使用的数据集。我需要创建一个包含 1000 个观测值 (n=1000) 的变量,其中每个观测值都是前一个观测值的函数,公式如下:yt 是 80% yt-1 + 20% 随机噪声,均值为 0,sd 为 1。此外, y1 = 1 的值。
这是我目前的代码(它运行了,但只提供了 1000 个 1 而没有其他值。因此,它没有正确生成数据,我不知道为什么...):
n <- 1000
i <- rnorm(n=1000, mean=0, sd=1)
data <- rep(1,1000);
for(i in 2:1000){
y[i]=0.80*y[i-1] + 0.20*rnorm(1)
}
data
感谢任何有关此代码的建议或帮助! 谢谢!
您还没有实例化 y
向量,只需将 data
更改为 y
就可以了。这就是全部:
y <- rep(1,1000);
for(i in 2:1000){
y[i]=0.80*y[i-1] + 0.20*rnorm(1)
}
y
只是为了提供一个替代方案,您可以使用 Rcpp 来执行此操作。当您需要计算这些类型的序列时,Rcpp 通常是一个不错的选择,因为在编译代码中循环比在 R 代码中循环更有利于性能。
cppFunction('
DoubleVector gensim(int n=1000, double mean=0, double sd=1 ) {
DoubleVector res(n);
double* resp = REAL(res);
resp[0] = 1;
for (int i = 1; i < n; ++i)
resp[i] = 0.80*resp[i-1] + 0.20*Rf_rnorm(mean,sd);
return res;
}
');
gensim();
## [1] 1.0000000000 0.8083990372 0.6281932260 0.8158159737 0.4193451426
## [6] 0.2963336105 0.1500730564 -0.0251075339 -0.0990122044 -0.0497148910
## ...