-1

我有一个简单的问题想在 Matlab 中使用 MuPad 来计算它。我用笔和纸花了大约 1 个小时来计算它,但是如果它可以使用 MuPad 来解决,这对我来说很有趣。

我有 n 个数字,分为两组(p 和 q),每组都有一个平均值(Mp 和 Mq)。我有一个称为 SSE(平方误差和)的度量,它计算组中任意数字与其平均值之间的平方距离之和,(sum (x[i]-Mp)^2 + sum (x[j]-Mq)^2其中 i 在第一组循环,j 在第二组循环)。我的问题是关于如果我将两条记录的位置从它们的原始组交换到相邻组的度量值( q <= xq,xp => p )。请注意,交换后团体的方式也会改变。最终公式(基于笔和纸)如下:

d = xq - xp

deltaSSE = SSE1 - SSE2 = d(d (np + nq)/(np nq) -2 (Mq-Mp))

其中 np 和 nq 是组中的记录数,xq 和 xp 是考虑交换位置的两条记录,Mq 和 Mp 是对应的手段(交换前)。

我对 MuPad 最重要的问题是关于组中的记录数(它总是低于 10)。

谢谢您的帮助。


关于上述公式的示例:您有两组“1 2 3”和“4 5 6”。这种聚类的 SSE 是 1^2+0^2+1^2 + 1^2+0^2+1^2 = 4。现在我很想知道如果我交换 3 的位置,SSE 是什么和6,没有完整的计算。根据上式,d=6-3=3,np=nq=3,Mp=(1+2+3)/3=2,Mq=(4+5+6)/3=5,所以deltaSSE = 3(3(3+3)/(3*3)-2(5-2))=-12,即新SSE为4+12=16。我的问题是关于如何在不知道 MuPad 中数字的确切数量的情况下表示数字集群。已知组中元素数量的简单形式可以在 MuPad 中轻松求解。

4

1 回答 1

1

也许你只需要表示一组数字就是计数、均值和方差。

Mp = SUM(x{i},i=1..np)/np
Sp = (SUM(x{i}^2,i=1..np)-np*Mp^2)/(np-1)

用你的例子:

np = 3                                  nq = 3
Mp1 = (1.0+2.0+3.0)/3 = 2.0             Mq1 = (4.0+5.0+6.0)/3 = 5.0
Sp1 = ((1+2^2+3^2)-3*2^2)/(3-1)=1.0     Sq1 = ((4+5^2+6^2)-3*5^2)/(3-1)=1.0

SSE1 = (np-1)*Sp1 + (nq-1)*Sq1 = 4.0

现在做一个改变xp=3.0xq=6.0你有新的数量

d = xq - xp = 3.0

Mp2 = Mp1+d/np = 3.0                     
Sp2 = Sp1 + d*(2*(xp-Mp1)/(np-1)+d/np) = 7.0

Mq2 = Mq1-d/nq = 4.0
Sq2 = Sq1 + d*(2*(Mq1-xq)/(nq-1)+d/nq) = 1.0

SSE2 = (np-1)*Sp2 + (nq-1)*Sq2 = 16.0

或者用一点代数

SSE2 - SSE1 = 2*d*(Mq1-Mp1)-d^2/np-d^2/nq = 12.0

所以要做到这一切,你不需要跟踪所有的数字x{i}and x{j},只需要跟踪它们的均值Mp&Mq和方差Sp& Sq

于 2012-07-16T13:50:38.453 回答