【问题标题】:Unconstrained Design matrix for factorial experiment in RR中因子实验的无约束设计矩阵
【发布时间】:2012-11-17 04:39:39
【问题描述】:

我想为 R 中的因子实验创建一个无约束的设计矩阵,以下代码为我提供了所需的矩阵。但是代码需要为每个因素以及截距项单独的model.matrix 命令。我很好奇单个班轮是否可以获得相同的结果。谢谢

y <- c(55, 56, 57, 53, 54, 55, 51, 52, 53, 61, 62, 63)
N <- gl(n = 2, k = 6, length = 2 * 6
        , labels = c("Low", "High")
        , ordered = FALSE)
P <- gl(n = 2, k = 3, length = 2 * 6
        , labels = c("Low", "High")
        , ordered = FALSE)
Data <- data.frame(y, N, P)

X <-
  cbind(
      model.matrix(object = y ~ 1,        data = Data)
    , model.matrix(object = y ~ -1 + N,   data = Data)
    , model.matrix(object = y ~ -1 + P,   data = Data)
    , model.matrix(object = y ~ -1 + N:P, data = Data)
    )

print(x = X)

【问题讨论】:

    标签: r statistics


    【解决方案1】:

    我认为关键是将所有对比设置为 FALSE。我想从技术上讲,这可能是一条线……它只是一条很长的线。

    model.matrix(y ~ N +P + N:P, data=Data, 
          contrasts.arg = lapply(Data[,sapply(Data, is.factor)], 
                                 contrasts, contrasts=FALSE))
    
    
       (Intercept) NLow NHigh PLow PHigh NLow:PLow NHigh:PLow NLow:PHigh NHigh:PHigh
    1            1    1     0    1     0         1          0          0           0
    2            1    1     0    1     0         1          0          0           0
    3            1    1     0    1     0         1          0          0           0
    4            1    1     0    0     1         0          0          1           0
    5            1    1     0    0     1         0          0          1           0
    6            1    1     0    0     1         0          0          1           0
    7            1    0     1    1     0         0          1          0           0
    8            1    0     1    1     0         0          1          0           0
    9            1    0     1    1     0         0          1          0           0
    10           1    0     1    0     1         0          0          0           1
    11           1    0     1    0     1         0          0          0           1
    12           1    0     1    0     1         0          0          0           1
    attr(,"assign")
    [1] 0 1 1 2 2 3 3 3 3
    attr(,"contrasts")
    attr(,"contrasts")$N
         Low High
    Low    1    0
    High   0    1
    
    attr(,"contrasts")$P
         Low High
    Low    1    0
    High   0    1
    

    【讨论】:

      【解决方案2】:

      不是单行,但可能更简单:

      contrasts(N, nlevels(N)) <- diag(nlevels(N))
      contrasts(P, nlevels(P)) <- diag(nlevels(P))
      Data2 <- data.frame(y, N, P)
      X2 <- model.matrix(y ~ 1 + N + P + N:P, data=Data2)
      

      【讨论】:

        猜你喜欢
        • 2021-12-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-01
        • 1970-01-01
        • 2015-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多