Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3709|回复: 16

[已解决]各位老师好,有个统计参数计算请大家帮忙

[复制链接]
发表于 2015-5-12 15:50 | 显示全部楼层 |阅读模式
长度为n的数列:X1  X2  X3  X4 ………………………………Xn
求序列的这个统计值    si=∑(xj-Aj)^2,j=1,2,3,……n
注意这个Aj,Aj是个均值,但不是整体的均值
Si对应的序列形状         X1……………………Xi / X(i+1)……………………XN       
左边一段每个xj对应的均值Aj实在(x1,xi)内跟它距离错12倍数的所有值的均值,
即average{xj,x(j-12),x(j-24),……}
右边一段则是average{xj,x(j+12),x(j+24),……},这样每个值都对应一个不同的均值,
只有距离相隔12倍数的值对应的均值才一样,然后求差值的平方和。
最后序列{X1 / X2 / X3 / X4 /………………………………/ Xn}每一个/位置上都对应一个S,及Si
求序列{S}的最小值min(Si)及对应的i
最佳答案
2015-5-15 11:06
手抖了一下,没上附件。。。。。
 楼主| 发表于 2015-5-12 15:52 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2015-5-12 16:11 | 显示全部楼层
回复

使用道具 举报

发表于 2015-5-12 16:37 | 显示全部楼层
无法验算,随便设了个1-100的数组,计算出S(20)=35676,不知对不对。。。。
  1. Public x(), n
  2. Sub main()
  3.     n = 100
  4.     ReDim x(1 To n)
  5.     For i = 1 To n
  6.         x(i) = i
  7.     Next
  8.     a = S(20)
  9.     Debug.Print a
  10. End Sub
  11. Function S(i)
  12.     For j = 1 To n
  13.         xj = x(j):  s1 = 0
  14.         If j < i Then
  15.             For k = 1 To j
  16.                 If j - (k - 1) * 12 >= 1 Then
  17.                     s1 = s1 + x(j - (k - 1) * 12)
  18.                 Else
  19.                     Exit For
  20.                 End If
  21.             Next
  22.             axj = s1 / (k - 1)
  23.         Else
  24.             For k = 1 To n
  25.                 If j + (k - 1) * 12 <= n Then
  26.                     s1 = s1 + x(j + (k - 1) * 12)
  27.                 Else
  28.                     Exit For
  29.                 End If
  30.             Next
  31.             axj = s1 / (k - 1)
  32.         End If
  33.         S = S + (xj - axj) ^ 2
  34.     Next
  35. End Function
复制代码
回复

使用道具 举报

 楼主| 发表于 2015-5-13 08:53 | 显示全部楼层
grf1973 发表于 2015-5-12 16:37
无法验算,随便设了个1-100的数组,计算出S(20)=35676,不知对不对。。。。

非常感谢,您能不能把它改成可以选择某一列数据作为对象的,比如s(range,i)这种用法,我可以验证一下。你这个已经定义好1到100,我不好验证
并且
  If j - (k - 1) * 12 >= 1 Then
                    s1 = s1 + x(j - (k - 1) * 12)

这里如果j=24,s=x(12)+x(24),你的式子是不是没有计算
回复

使用道具 举报

发表于 2015-5-13 09:30 | 显示全部楼层
应该计算了吧,k=1,s1=s1+x(24);k=2,s1=s1+x(12).前提是j<i。
附件改了一下,做成可以选择区域。示例里选了[a1:a100]。

工作簿1.rar

9.62 KB, 下载次数: 7

回复

使用道具 举报

发表于 2015-5-13 09:31 | 显示全部楼层
另外当j=i时是取前半部分,还是后半部分,未明确。附件里取了后半部分。
回复

使用道具 举报

 楼主| 发表于 2015-5-13 11:44 | 显示全部楼层
grf1973 发表于 2015-5-13 09:30
应该计算了吧,k=1,s1=s1+x(24);k=2,s1=s1+x(12).前提是j

    J<=i时,序列这样看  {(1………………j-36………j-24………j-12………j)………j+12………j+24………j+36………………i}
         If j - (k - 1) * 12 >= 1 Then
                  s1 = s1 + x(j - (k - 1) * 12)
前半部分你这个只算了小括号里面的,应该有j - (k - 1) * 12 >= 1还有j + (k - 1) * 12 <=i
J=i时,没什么影响,只是我说的这个j + (k - 1) * 12 <=i没有了


老师你看,是不是
回复

使用道具 举报

发表于 2015-5-13 11:50 | 显示全部楼层
前后半段都要算的?
回复

使用道具 举报

发表于 2015-5-13 11:51 | 显示全部楼层
你举个例吧,比如1-100数组,S(30),j=18的时候,怎么弄
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-19 18:13 , Processed in 0.449086 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表