R:陷入 "simple" 问题:计算 n*m 矩阵中的总平方和
R: Stuck on a "simple" problem: calculating total sum of squares in a n*m matrix
给定一个 n 行 m 列的数据矩阵,我想计算 R 中的总平方和。
为此,我尝试了一个循环遍历每一列的行并将结果保存在一个向量中。然后将它们添加到 "TSS" 向量中,其中每个值都是一列的 SS。这个向量的总和应该是TSS。
set.seed(2020)
m <- matrix(c(sample(1:100, 80)), nrow = 40, ncol = 2)
tss <- c()
for(j in 1:ncol(m)){
tssVec <- c()
for(i in 1:nrow(m)){
b <- sum(((m[i,]) - mean(m[,j]))^2)
tssVec <- c(tssVec, b)
}
tss <- c(tss, sum(tssVec))
}
sum(tss)
输出等于136705.6。这根本不可行。作为一个coder新手,很遗憾卡住了。
感谢任何帮助!
评估TSS的方法有很多种,当然它们给你的结果都是一样的。我会做类似的事情:
方法 1 暗示使用方差分析:
n <- as.data.frame(m)
mylm <- lm(n$V1 ~ n$V2)
SSTotal <-sum(anova(mylm)[,2])
方法二:
SSTotal <- var( m[,1] ) * (nrow(m)-1)
给定一个 n 行 m 列的数据矩阵,我想计算 R 中的总平方和。
为此,我尝试了一个循环遍历每一列的行并将结果保存在一个向量中。然后将它们添加到 "TSS" 向量中,其中每个值都是一列的 SS。这个向量的总和应该是TSS。
set.seed(2020)
m <- matrix(c(sample(1:100, 80)), nrow = 40, ncol = 2)
tss <- c()
for(j in 1:ncol(m)){
tssVec <- c()
for(i in 1:nrow(m)){
b <- sum(((m[i,]) - mean(m[,j]))^2)
tssVec <- c(tssVec, b)
}
tss <- c(tss, sum(tssVec))
}
sum(tss)
输出等于136705.6。这根本不可行。作为一个coder新手,很遗憾卡住了。
感谢任何帮助!
评估TSS的方法有很多种,当然它们给你的结果都是一样的。我会做类似的事情:
方法 1 暗示使用方差分析:
n <- as.data.frame(m)
mylm <- lm(n$V1 ~ n$V2)
SSTotal <-sum(anova(mylm)[,2])
方法二:
SSTotal <- var( m[,1] ) * (nrow(m)-1)