R 计算总平方和
我正试图在R Studio中为我自己的k-means实现编写我自己的函数,用于求平方和之和、平方和内和平方和之间 我已经成功地编写了平方和内的函数,但是我在平方和(以及bss)方面遇到了困难。我得到的结果比R自己的kmeans函数计算的结果要大得多。我很困惑,因为我完全遵循公式提供的内容。以下是我的数据:R 计算总平方和,r,k-means,R,K Means,我正试图在R Studio中为我自己的k-means实现编写我自己的函数,用于求平方和之和、平方和内和平方和之间 我已经成功地编写了平方和内的函数,但是我在平方和(以及bss)方面遇到了困难。我得到的结果比R自己的kmeans函数计算的结果要大得多。我很困惑,因为我完全遵循公式提供的内容。以下是我的数据: A = 36 3 73 3 30 3 49 3 47 11 47 11 0 7 46 5 16 3 52 4
A =
36 3
73 3
30 3
49 3
47 11
47 11
0 7
46 5
16 3
52 4
0 8
21 3
0 4
57 6
31 5
0 6
40 3
31 5
38 4
0 5
59 4
61 6
48 7
29 2
0 4
19 4
19 3
48 9
48 4
21 5
其中,每列都是一个要素。这是我迄今为止为tss创建的函数:
tot_sumoSq <- function(data){
avg = mean( as.matrix(data) )
r = matrix(avg, nrow(data), ncol(data))
tot_sumoSq = sum( (data - r)^2 )
}
tot_sumoSq您的程序可能有问题。从数据帧中减去一个矩阵。使用以下命令-
tot_sumoSq <- function(data){
data = as.matrix(data)
x = sum((data - mean(data))^2)
return(x)
}
tot_sumoSq后一个值使用列平均值计算。如果你用这个来计算平均数,你会得到同样的答案
avg = colMeans(data)
r = matrix(avg, nrow(data), ncol(data), byrow=T)
[1] 13244.8
通过结合前两位评论员提供的解决方案,我找到了解决问题的方法。我知道我以前的错误是什么,我想为未来的科学家澄清任何困惑
tot_sumoSq <- function(data){
avg = colMeans(data)
r = matrix(avg, nrow(data), ncol(data), byrow = T)
data = as.matrix(data)
return( sum( (data - r)^2 ) )
}
谢谢你。这澄清了很多,谢谢。这并没有解决我的问题,但它确实帮助我找到了解决方案!