r - 时间序列模拟(多次观察)
问题描述
我正在尝试通过多个观察来模拟一些时间序列数据。我确实想在他们自己的时间段内为每个人设置自相关(r=.7)。时间段大小不同:size <- c(10, 50, 100, 200, 300, 400, 440, 500)
. 比如第一个个体有10个时间点,第二个个体有50个时间点,等等。最后,我想返回一个包含id、a和b的数据框。这是我尝试过但无济于事的方法。我对 R 很陌生,所以我很感激任何帮助。
size <- c(10, 50, 100, 200, 300, 400, 440, 500)
results <- sapply(size, function(x)
a=rnorm(size),
ar.epsilon <- arima.sim(list(order = c(1,0,0), ar = 0.7), n = size, sd=20),
b = 50 + 25*a + ar.epsilon,
data.frame(id, a, b))
解决方案
这是否接近您打算做的事情?我不确定id
代表什么。
size <- c(10, 50, 100, 200, 300, 400, 440, 500)
set.seed(420)
results_a <- matrix(NA, nrow = max(size), ncol = length(size))
results_b <- matrix(NA, nrow = max(size), ncol = length(size))
for(i in 1:ncol(results)){
a <- rnorm(size[i])
ar.epsilon <- arima.sim(list(order = c(1,0,0), ar = 0.7), n = size[i], sd=20)
b = size[i]*a + ar.epsilon
results_id[]
results_a[c(1:size[i]), i] <- a
results_b[c(1:size[i]), i] <- b
}
colnames(results_a) <- paste0('id.a.', size)
colnames(results_b) <- paste0('id.b.', size)
result_final <- data.frame(results_a, results_b)
result_final <- result_final[, c(1, 9, 2, 10, 3, 11, 4, 12, 5, 13, 6, 14, 7, 15, 8, 16)]
head(result_final, 5)
id.a.10 id.b.10 id.a.50 id.b.50 id.a.100 id.b.100 id.a.200 id.b.200 id.a.300 id.b.300
1 0.2677109 4.135141 -1.2479756 -117.59951 0.98359034 62.78846 -0.4334481 -80.73017 -1.2820512 -376.21611
2 -0.9367075 -31.289128 -2.8949090 -177.02084 -0.09517645 -24.60170 -0.2134596 -24.28731 -0.2437892 -105.31801
3 0.5962061 -2.716978 1.1995795 68.50393 -1.13753051 -91.86198 1.2898376 291.26922 0.5395736 118.88174
4 -0.3120436 -22.395355 0.2200063 55.90104 -0.23305847 -32.09204 0.7150280 168.96521 -0.1842391 -63.82123
5 0.3979791 -33.284591 0.9722208 102.26825 -0.45663605 -58.60094 0.4104681 70.51101 1.2605879 373.00674
id.a.400 id.b.400 id.a.440 id.b.440 id.a.500 id.b.500
1 -0.81734653 -354.499825 1.416543 649.6649 -0.7634678 -399.9059
2 1.77813114 670.127238 0.301712 149.6443 0.4791241 210.1626
3 -1.13121629 -501.422591 2.129244 950.8821 1.4002161 710.6371
4 0.08281154 -2.199712 1.321002 610.5567 0.2423353 140.2799
5 0.68390623 262.957092 -1.161112 -497.6224 -0.3141071 -179.2746
推荐阅读
- javascript - 处理“无法获取”错误
- vba - 在 VBA 中查找最早的日期
- javascript - 当十进制值诗句计数动画卡住
- java - Java:使用自定义注释的方法级授权检查
- ubuntu - 同时作为单独的用户运行服务 - Ubuntu 服务器 - Minecraft/OpenVPN
- amazon-web-services - 单独的 Dockerrun.aws.json 文件用于暂存和生产
- java - 如何使用通过 Java 传递的布尔值调用方法
- firebase-cloud-messaging - Polymer 2.0 - Firebase 消息传递错误 - 未捕获(承诺)DOMException:注册失败 - 推送服务错误
- python - 使用切片格式化时间 str
- java - Anylogic:使用参数丢弃给定数量