爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 8646|回复: 10

[分享资料] 为何平均值的两种算法结果不一样呢?

[复制链接]

新浪微博达人勋

发表于 2012-7-31 19:20:41 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
请教各位:
遇到这个一个问题: 假如我要计算6,7,8三个月的平均气温, 分别用下面两个式子计算了下,发现结果不一样:
1. avet=ave(air,t=6,t=8)
2. avet=(air6+air7+air8)/3
为何1和2的结果不一样呢. 还有需要注意的是, 如果某一个月如6月份有部分数据缺失, 第一种方法似乎默认其为0,仍会将7、8月份的数据进行平均,其结果是夏季平均气温的值都存在。 但对于第二种方法,如果6月份有部分数据缺失,最终的平均值也会在相应的地方发生缺失。

这是为什么呢? 如何使得在使用第二种方法时,不存在缺失数据呢?如我要计算春季和秋季的平均值,必须用(ave(air,t=3,t=5)+ ave(air,t=9,t=11))/2,如何办呢?
谢谢
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2012-7-31 20:30:48 | 显示全部楼层
你可以用fortran算完之后对比一下
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-7-31 21:28:57 | 显示全部楼层
发现的问题挺好,清风所说你可以用fortran程序来验证你尝试的思路,ave求平均略去缺测是程序设计的时候这样比较合理(一般处理数据都是这种思路能更合理的利用每个数据),三个数求平均时是因为缺测值一般设置的很大,会如实加进去算,我猜想程序本身认定接近缺测的为缺测,当然只是猜想,有待验证!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-7-31 21:53:48 | 显示全部楼层
本帖最后由 MeteoInfo 于 2012-7-31 21:54 编辑

ave平均计算中缺测值并非被当作0(那样算出来的数据肯定是错的)而是被忽略掉(不在计算中使用)。比如计算三个月的平均,三个月的数据中格点(2, 2)都是有效值,那么该格点的平均值为(m1(2, 2) + m2(2, 2) + m3(2, 2)) / 3。如果其中一个月该格点的数据是缺测值(比如m2为缺测值),那么该格点的平均值为(m1(2, 2) + m3(2, 2) ) / 2,缺测数据不参与平均计算。

对于平均计算来说这种处理是可行的,可以获得尽可能多的有效数据。但对于其它运算是不能这样处理的,比如最简单的加法运算,数据中有缺测值的格点其结果也只能处理成缺测值。给一个现实的例子:雨量累加,缺测数据并不代表该格点就没有降水,如果缺测值当做0值来看待显然是不对的。

具体到GrADS计算里,ave函数可以设计为获取尽可能多的有效数据的方式,但是+, -, *, /等运算是不可以的。所以楼主提到两种计算方式结果不一致是正常的。

可以将春季和秋季的平均值分别用ave计算出来,保存到文件中,然后用新文件再ave计算。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-7-31 22:22:33 | 显示全部楼层
谢谢楼主诸位的认真解答, 这下算是明白该如何处理了!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-8-1 08:44:02 | 显示全部楼层

请教版主, 如何将这两个季节保存,再用ave计算呢? 可以给些稍详细的指导吗?
谢谢啊!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-8-1 13:09:05 | 显示全部楼层
“如何使得在使用第二种方法时,不存在缺失数据呢?” 你这个问题我个人觉得没有答案。因为你想取平均的那一组数据当中出现数据缺失的话,保存数据格式里一般会用很大或很小的数据来表示缺测值的,比如在grads的ctl文件里的那样UNDEF  -9.9990e+33。这个值你不能真正当做 -9.9990e+33来进行平均,也不能当做零来处理,也只能跳过这种缺测值的对应一组数据,因为缺测意味着你不知道真正值是多少,你不能随便当成某值来处理得平均吧?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-8-1 16:23:33 | 显示全部楼层
abd 发表于 2012-8-1 13:09
“如何使得在使用第二种方法时,不存在缺失数据呢?” 你这个问题我个人觉得没有答案。因为你想取平均的那一 ...

我的意思是如果某个格点在某个月缺失数据(如6月份), 我们可以只求只求该格点7、8月份的平均值。ave函数可以这样处理,但如果月份不连续的话(如我想求3,4,5,9,10,11份的平均值),只有ave解决不了问题,这时如果某个格点在某个月有缺失数据的话,则整个平均值就会在该格点没有数据。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-8-1 18:54:44 | 显示全部楼层
liuzf406 发表于 2012-8-1 16:23
我的意思是如果某个格点在某个月缺失数据(如6月份), 我们可以只求只求该格点7、8月份的平均值。ave函数可 ...

谢谢各位, 搞定了.
我用fwrite将3, 4, 5, 9,10, 11写在另一个grd文件,然后再用ave函数进行计算.
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-10-18 21:02:59 | 显示全部楼层
MeteoInfo 发表于 2012-7-31 21:53
ave平均计算中缺测值并非被当作0(那样算出来的数据肯定是错的)而是被忽略掉(不在计算中使用)。比如计算 ...

那如果需要算异常的话,缺测值貌似就参加了运算,就会变成-0.001......这样的数,这对画图会有影响,这时候应该怎么处理呢?
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

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