R 计算总平方和

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

我正试图在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
 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 ) )

}

谢谢你。这澄清了很多,谢谢。这并没有解决我的问题,但它确实帮助我找到了解决方案!