如何构建数据以使用R lmer

时间:2014-10-28 03:19:21

标签: r

我正在尝试对可靠性数据进行趋势分析。典型的情况是确定指定工厂的指定系统的需求率是否存在10年趋势。

我正在尝试生成测试用例,但对如何构建数据感到有点困惑。趋势年份的范围从2004年到2013年。在我的测试案例中,我每年都有10个需求计算的系统。我每年使用正常分布的需求计数,具有不同的均值和方差。当然,实际数据每年可能不会具有相同的系统数量,并且需求计数不一定是正常分布的。

以下R代码生成一个对我来说合理的数据框(df1):

yr <- 2004:2013
y2004 <- rnorm(10, 10, 3)
y2005 <- rnorm(10, 11, 2)
y2006 <- rnorm(10, 12, 1)
y2007 <- rnorm(10, 13, 5)
y2008 <- rnorm(10, 14, 3)
y2009 <- rnorm(10, 15, 4)
y2010 <- rnorm(10, 16, 1)
y2011 <- rnorm(10, 17, 2)
y2012 <- rnorm(10, 18, 4)
y2013 <- rnorm(10, 19, 1)

df1 <- data.frame(cbind(yr), y2004, y2005, y2006, y2007, y2008, y2009, y2010, y2011, y2012,y2013)
df2 <- data.frame(cbind(rep(0.0, 100), rep(0.0, 100)))
names(df2) <- c("x", "y")
k <-1
for (i in 1:10) {
  for (j in 1:10) {
   df2$x[k] <- df1$yr[i]
   df2$y[k] <- df1[j,i+1]   
   k <- k + 1
  }
}
boxplot(y ~ x, df2)

无论如何,我的第一个问题是df2的构造似乎是不必要的,因为我已经有了df1中的数据 - 它只是对lmer的调用似乎需要组织df2。我对lmer的调用如下所示:

fit <- lmer(y ~ x + (1|x), data=df2)    

那么有没有一种方法可以使用lmer而不使用df2,直接使用df1?或者是否有更好的方法来完全构建数据?

我的第二个问题是我不确定如何使用lmer做我想做的事情。基本上我希望汇总每年的计数数据,并用直线拟合每年的平均需求量。最佳拟合应考虑每个合并年组中数据的方差。我正确地去做了吗?

1 个答案:

答案 0 :(得分:0)

R中几乎所有的绘图和建模功能都需要“长”格式的数据(即df2)。所以如果有的话,我会跳过df1的构造。如果您想直接生成df2,可以执行

df2 <- do.call("rbind.data.frame", Map(cbind, 
    y=Map(function(n,m,s) rnorm(n,m,s), 10, 10:19, c(3,2,1,5,3,4,1,2,3,1)), 
    x=2004:2013))