在ggplot(R)中绘制许多自然三次样条

时间:2013-10-06 21:23:38

标签: r ggplot2

请原谅我,如果我在这里问一个基本的问题(我在R中没有太多经验),但我现在正试图在R和I&#39中绘制一些自然的三次样条。 ;跑到墙上。

我的数据集有~3500行和约30列。这是关于整个职业生涯中约270名不同棒球运动员的单季棒球统计数据。基本上,我有大约270个时间序列(每个玩家一个)。

我对玩家表现感兴趣,因为这个东西被称为wOBA随着时间的推移,所以我想为每个人拟合一个自然的三次样条,然后在一个图上叠加所有样条。是的,必须是一个自然的三次样条曲线。据我所知,这是在ggplot中实现它的唯一方法。

我目前的代码是:

  #initialize plot
  plot <- ggplot(data, aes(x=age, y=wOBA, color=playerID, group=playerID)) + theme(legend.position="none")

  #loop through players to add splines
  for (i in unique(data$playerID)) {
    plot <- plot + stat_smooth(method = lm, formula = y~ns(x,3), data=data[which(data$playerID=="i"),list(playerID,age,wOBA)], se=FALSE)
}

我已经检查过我可以在循环中为几个不同的玩家手动运行代码片段,并且情节完全按照我想要的方式进行。但是当我尝试运行这个循环时,它需要永远。我检查了内存使用情况,因为这个循环正在运行,它肯定用完了(我在4GB机器上)。

我有点困惑为什么会这样。我不希望只有270个样条拟合会导致R在执行时完全消耗掉> 2gb的可用内存。

我对R有些陌生,所以我确定我错过了一些东西。任何人都可以提供任何指示吗?对不起,如果这是一个完全骨头的问题!

0 个答案:

没有答案