多面板图非NA错误

时间:2014-05-01 12:47:51

标签: r panel lattice lm

我有一个看起来像这样的数据框。

a[,2:25]
     UT1 UT2 UT3 UT4 UT5 UT6 UT7 UT8 UT9 UT10 UT11 UT12 TR1 TR2 TR3 TR4
3094   9   0   1  37   6   2   8   1   1    6    3    1   3   0   0   1
3095   4   0   0  10  17   6   7   1   5    3    1   12   2   0   0   1
3096  18   0   0   4   6  15  14   0   7    9    3    8   5   2   1   2
3097  11   0   0   7   5  15  10   2   4    7   16   17   7   3   0   0
3098  18   0  11   2   5  11   7   3   2    1    1    0   3   3   1   1
3099  25   0   6  11  17   3  10   1   1    3    9    2   2   1   1   2
3100   1   0   1  27  12  28  27   0   2   11    6    0   1   7   4   6
3101   0   0   1  40   0  17  13   1   0    3    3    0   1   3   3   1
3102   2   0   0  30   1   9   2   1   1    5    0    0   1   3   3   0
3103   3   0   0  11   4   7   5   2   4    0    1    0   5   4   0   0
3104   5   0   0   3   1  10   4   2   3    0    3    0   7   2   1   0
     TR5 TR6 TR7 TR8 TR9 TR10 TR11 TR12
3094   1   0  15   3   0    0   42    1
3095   1   0   4  29   0    0   42    0
3096   0   0   3  22   0    0    3    0
3097   1   0   4  14   0    0    2    0
3098   0   0   1  10   0    0    1    0
3099   0   0   4  41   1    0    3    0
3100   0   0  10  21   0    0   17    0
3101   0   0   2   1   1    0   13    3
3102   0   0   2   4   0    0   10    3
3103   1   0   3   4   0    0   12    1
3104   0   0   1   2   0    0    8    0

我的数据的第一列是时候所以我使用

将其分开
tiempo<-a$Tiempo
tiempo
 [1] 618.6 618.8 619.0 619.2 619.4 619.6 619.8 620.0 620.2 620.4 620.6 

为了将每一列绘制为时间函数并且我使用了重塑packagelattice。我不确定这是最好的选择,但几乎可以得到我想要的东西。 代码如下所示:

m<-melt(a[,2:25])
f<-m$variable
xyplot(m$value~tiempo | f, panel=function(x,y,...){
  panel.xyplot(x,y,...)
  panel.lmline(x,y, col=2, lty=2)
})

输出就是这个图

enter image description here

我不明白为什么它会出现这个错误,我希望它们不是NA,我不明白它为什么会出问题。事实上,第一个小组工作得很好。

当我更改panel.lmline(...)部分时会发生这种情况:

xyplot(m$value~tiempo | f, panel=function(x,y,...){
  panel.xyplot(tiempo,m$value,...)
  panel.lmline(tiempo,m$value, col=2, lty=2)
})

enter image description here

我得到了这个长度错误,但我认为这是因为每个面板使用m的所有数据点时应该只使用11个。

我使用的lm回归函数与绘图分开,这并不会影响我的统计分析,但我试图将所有内容放在一起,如果我不能做到这一点无法绘制数据。我想要关于回归的视觉信息,以便能够在Rsquared太低或甚至不考虑观察时去除异常值。

我希望我已经清楚了。 非常感谢你

使用建议编辑

enter image description here

1 个答案:

答案 0 :(得分:0)

你的大部分代码都是正确的。

最好在melt调用中将time(tiempo)变量用作id变量 这将确保数据的长度匹配。

library(reshape2) #This is faster version of reshape
df.m <- melt(df.matias, id.var="Tiempo") #I stored your data in df.matias

现在我们可以使用融化的数据制作你的情节

library(lattice)
xyplot(value ~ Tiempo | variable, data = df.m,
   panel = function(x,y,...) {
     panel.xyplot(x,y,...)
     panel.lmline(x,y, col = 2, lty =2)
})