r - R中的双重居中

关闭。这个问题需要details or clarity .它目前不接受答案。












想改善这个问题吗?通过 editing this post 添加详细信息并澄清问题.

4年前关闭。




Improve this question




你知道如何在 R 中将矩阵转换为所谓的双中心矩阵吗?这样变换矩阵的 sum(col) 和 sum(row) 都是零向量。谢谢。

最佳答案

使用以下算法对矩阵 M 进行双中心化:

  • 生成两个与 M 大小相同的矩阵 R 和 C。 R 和 C 分别包含行和列均值:
  •     | mean(M[1,1:3])  mean(M[1,1:3])  mean(M[1,1:3]) |
    R = | mean(M[2,1:3])  mean(M[2,1:3])  mean(M[2,1:3]) |
        | mean(M[3,1:3])  mean(M[3,1:3])  mean(M[3,1:3]) | 
    
        | mean(M[1:3,1])  mean(M[1:3,2])  mean(M[1:3,3]) |
    C = | mean(M[1:3,1])  mean(M[1:3,2])  mean(M[1:3,3]) |
        | mean(M[1:3,1])  mean(M[1:3,2])  mean(M[1:3,3]) |
    
  • 将它们减去 M 并加上总平均值:M - C - R + grand_mean(M) .

  • 这是执行此操作的代码:
    # example data
    M = matrix(runif(9), nrow=3, ncol=3)
    
    # compute the row-wise and column-wise mean matrices
    R = M*0 + rowMeans(M)  # or `do.call(cbind, rep(list(rowMeans(tst)), 3))`
    C = t(M*0 + colMeans(M))  # or `do.call(rbind, rep(list(colMeans(tst)), 3))`
    
    # substract them and add the grand mean
    M_double_centered = M - R - C + mean(M[])
    
    您可以通过计算 rowMeans(M_double_centered) 来检查这是否给出了正确的答案。和 colMeans(M_double_centered) .

    https://stackoverflow.com/questions/43639063/

    相关文章:

    atom-editor - 原子氢 : How is "run cell" used?

    azure - 在 Debian 上安装 AzureAD 模块

    r - 从 R 中的公式中提取模型框架时排除变量

    java - 使用 lambda 计算列表中的列表

    docker - 在 alpine 容器中使用 confluent-kafka python 客户端

    r - 每种可能组合的 Wilcoxon 秩和检验

    r - 交叉比较相同数据框的列

    r - 为列名传递变量?

    junit4 - Wiremock 模拟返回 HTTP 500

    java - 如果单例不好!为什么spring bean默认是单调的