【问题标题】:How to plot recurrencies in R如何在 R 中绘制递归
【发布时间】:2016-08-03 15:12:52
【问题描述】:

如何在 R 中绘制循环。 欢迎使用任何带有基本图、ggplot2、lattice 或专用包的解决方案。

例如:

想象一下我有这些数据:

mydata <- data.frame(t=1:10, Y=runif(10))

t         Y
1 0.3744869
2 0.6314202
3 0.3900789
4 0.6896278
5 0.6894134
6 0.5549006
7 0.4296244
8 0.4527201
9 0.3064433
10 0.5783539

我可以这样改造它:

mydata2 <- data.frame(t=c(NA,mydata$t),Y=c(NA,mydata$Y),Y2=c(mydata$Y, NA))

 t         Y        Y2   
 NA        NA 0.9103703
 1 0.9103703 0.1426041
 2 0.1426041 0.4150476
 3 0.4150476 0.2109258
 4 0.2109258 0.4287504
 5 0.4287504 0.1326900
 6 0.1326900 0.4600964
 7 0.4600964 0.9429571
 8 0.9429571 0.7619739
 9 0.7619739 0.9329098
10 0.9329098        NA

(或类似的方法,但我可能会遇到丢失数据的问题) 并绘制它

plot(Y2~Y, data=mydata2)

我想我必须使用一些分组功能,例如 ave 或 apply。但这不是一个优雅的解决方案,如果我有更多列,则很难概括转换。

例如

mydata3 <- data.frame(x=sample(10,100, replace=T),t=1:100, Y=2*runif(100)+1)

对于每个 x(或其他列上的值组合),我想在同一个图上绘制 Y_{i+1} ~ Y_i,

其他工具,例如 Mathematica 具有直接绘制序列的功能。

【问题讨论】:

  • 您在寻找lag 函数吗?
  • 滞后是我手动完成的,但正如我所说,我正在寻找更直接的东西,即使有更多的列(按组)也可以工作。并且缺失值不会产生预期的结果。

标签: r plot recurrence


【解决方案1】:

我找到了一个解决方案,虽然不是很漂亮:

对于这个示例数据。

mydata <- data.frame(x=sample(4,25, replace=T),t=1:25, Y=2*runif(25)+1)

newdata <- mydata[order(mydata$x, mydata$t), ]
newdata$prev <- ave(newdata$Y, newdata$x, FUN=function(x) c(NA,head(x,-1)))
plot(Y~prev, data=newdata)

在此示例中,您没有每个 t 值都有行,您需要首先为缺失值生成 NA。但这只是一个快速的解决方案。在我的真实数据中,我对每个 t 都有很多观察结果。 lag.plot 可以绘制递归图,但不能在每个子组内绘制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-25
    • 2017-02-05
    • 2014-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多