3.
\ begingroup美元

下面是我第一次/原型尝试将其可视化的说明,在此之后将进一步解释……在这里输入图像描述您现在看到的是来自USW00094728的TMAX(每日最大温度)数据的逐年动画。dly档案(站在中央公园在纽约市)公开提供ftp://ftp.ncdc.noaa.gov/pub/data/ghcn/daily(请参阅该目录下的readme.txt文件,了解文件格式信息等)。

每一帧的左手边是1月1日TMAX,右手边是12月31日,每一帧代表一整年。年份是1870年到2009年,每年显示0.2秒。两个空白帧表示动画重复。温度刻度为$40^o\mbox{C}$ max, $-10^o\mbox{C}$ min。

同时,动画中显示的每日TMAX数据也进行了平滑处理,即。,每一天代表七天的平均数,包括前三天和后三天。如果没有平滑,它就会变得非常跳跃/不连续。

然而,即使进行了平滑处理,在所代表的140年期间,普通观察者也没有发现TMAX的变化。当然,在$40^o$的图上预期有$1$ - $2^o$的变化,这可能很难随意注意到。

于是我有了几个想法。(a)也许可以减去日平均值(140年的平均值),并显示$ sim10^o$图,其较高的分辨率将使小delta更容易观察到。(b)每年分别进行7天的平滑处理可能还不够,因为年与年的数据仍然非常波动。因此,通过将前后几年的同一天平均起来,可能会更加平滑。但这可能是太多不合理的数据处理了。

因此,这里的总体问题是:显示什么/如何显示-这样~150年的TMAX变化对普通观察者来说很容易看到和解释/理解。任何街上的普通人都应该能够看到它,并立即看到发生了什么,而不需要任何官样文章/胡言乱语的技术解释。另外,一个附带的问题:找到noaa ghcn数据花了一段时间,这看起来很棒。有没有同样好的或者更好的公开可用的数据集?


编辑
-----------

谢谢评论,@ dangerdytempest和@CamiloRada。

JT的“夜间低”建议(来自ghcn数据的TMIN元素)很容易展示,只是对完全相同的程序要求不同的命令行参数(顺便说一下,没有包,都是直接C编程,这是我在注意到您的配置文件中的“程序员”后提到的)。所以我已经在下面说明了TMIN动画(缩放等,与上面的TMAX动画相同)。然而,正如人们所预料的那样,在140年的时间里,仍然没有容易想象的变化。

我们将不得不尝试“使用异常”,引用CR,并希望得到更好的结果。这可能是一个合理的希望,基于你的youtube链接,这几乎就是我认为我会产生的,除了Jan,…, 12月沿着x轴,而不是“圆图”显示在那里。(顺便说一下,虽然这个圆图很容易理解,但我认为街上的普通人可能更容易识别沿着x轴从左到右的月份显示,这可能是大多数人更熟悉的。)

我还会仔细看看youtube主页使用的HadCRUT4.4数据http://www.climate-lab-book.ac.uk/2016/spiralling-global-temperatures/在我尝试的搜索过程中,谷歌并没有提供这些数据,我想还有更多好的和有趣的东西被我忽略了。

同时,下面是JT建议的TMIN图。“异常图”将很容易在我编码跨年数据“选择”离子(即。,类似于关系表)从GHCN数据。这将花费一些时间(在我可用的空闲时间内),当它完成时,我将尝试发布一些更好的温度升高可视化。JT更详细的显示建议将需要更详细的思考和操作(在显示方面比在计算方面更多),我将在编写更直接的“异常”内容时尝试计划/设计。再次感谢JT和CR。

在这里输入图像描述

\ endgroup美元
3.
  • 2
    \ begingroup美元 把前几年最高点的像素放下来(使用透明度)(在重复次数越来越多的点上用越来越亮的颜色)可能会更整洁。这可能会显示出一些独特的东西。当然,你需要以某种方式纳入平均水平,因为每年的波动将比长期变化更大。这似乎是一种独特的方式,但不知道它是否容易用你正在使用的包来做…即使它很显眼也不会。但似乎你越平滑真实的波动,在某种意义上你失去的就越多。相反,这将使用它们来显示任何更改。 \ endgroup美元
    - - - - - -JeopardyTempest
    2018年9月6日15:44
  • 1
    \ begingroup美元 不过,一个关键的问题可能是,在大多数地方测量到的大部分变暖实际上是在夜间的低温下。如果白天的温度只有半度或更低,我不会感到惊讶(不知道)。这在大多数绘图方法中都是非常困难的。 \ endgroup美元
    - - - - - -JeopardyTempest
    2018年9月6日15:45
  • 1
    \ begingroup美元 关键是要以某种方式与前几年保持一致,或者至少保持当年的平均值。使用异常肯定会改善可视化,但我不建议相对于整个数据集的平均值计算异常,而是建议根据1900年之前或1920年之前的平均值计算它们。这是一个很好的可视化,适用于你的情况v = wXrYvd-LBu0 youtube.com/watch ? \ endgroup美元
    - - - - - -卡米洛·Rada
    2018年9月6日17:07

2答案2

2
\ begingroup美元

这本身并不是一个真正的答案。然而,根据JT的评论“你需要以某种方式合并平均值”(这反映了我自己在原始问题中的推测),我已经合并(减去)了平均值,这确实在图表中展示了一个很容易看到的趋势。所以在某种程度上,这是一个“答案”。我还创建了两种新的图形类型,在下面进行了说明和讨论(所有三种类型),以及它们提出的一些附加问题。

首先是1870-2009年$T_{MAX}$偏离均值的逐年静态图。每一个年偏差被计算为365/366天的日偏差的平均值,即$\frac1{365(或366)}\sum_{i=jan1}^{dec31}T_i-T^{mean}_i$,其中$T^{mean}_i$是一年中特定一天的平均值$T$(平均超过366天)所有年份,还没有考虑到CR关于1900年以前或1920年以前的评论)。每个图的比例现在是$\pm4^oC$。同样,最左边的点代表1870年的$T-T^{mean}$,最右边的点代表2009年的$。在这里输入图像描述上面的图表没有像之前讨论的那样逐日平滑(我们已经平均了所有日子),但它有一个4年平滑,即,和中的每个$T_i$实际上是当年和当天的$T$的9点移动平均值,以及前四年和未来四年的同一天的$T$。没有任何平滑处理,就像这样在这里输入图像描述因此,某种程度的润色似乎是必要的,至少对于面向普通观众的情节来说是这样。我可以很容易地计算每天的权重(例如,像正态分布一样),将最大的权重分配给当年的那一天,但我还没有尝试过任何这样的方法。这类数据平滑有什么公认的加权方法吗?

顺便说一下,JT建议使用$T_{MIN}$实际上并不像前面的$T_{MAX}$那样“单调”,在这里输入图像描述所以我将使用$T_{MAX}$的下面的动画…





第一种类型的动画与最初的动画类似,但现在显示了偏离平均值的偏差,因此刻度现在为$\pm4^oC$。从左到右是1月1日到12月31日,第一帧显示1870年,最后一帧显示2009年(有一些空白帧表示动画重复播放)。为了避免过于“紧张”的动画,9点移动平均平滑被“双向”使用,即,首先$\pm4$天获得一年内某一天的$T$,然后$\pm4$年使用一年中的同一天的$T$来获得显示的$T$。在这里输入图像描述所以现在(与原始问题中的动画不同),显示的$T$-偏离平均值开始(1870年)低于基线,并结束(2009年)高于基线,正如我们所期望的那样。

但可能不像我们预期的那样(至少不像我预期的那样),仔细观察,发现一年中有些日子似乎有点顽固地表现出更高的温度。这就好像气候变化在休假时有一些“国定假日”。所以这就提出了另一种类型的动画来看看这是不是一个真实的效果。

它只是沿着另一个轴从整个数据集中取“切片”。也就是说,从左到右是1870年到2009年,动画有365帧,第一帧是1月1日,最后一帧是12月31日(额外的闰年被省略了)。平滑和上面一样。在这里输入图像描述这对我来说确实有点出乎意料。每一帧,单独地,描绘出某一天的年与年$T$-偏差。每个图看起来都太连续了。随便想想,比如9月28日。如果某年的气温恰好高于平均水平,你就不会认为这一事实与明年9月28日是否也会更热有多大关系。但这些图表通常是很长的温暖或寒冷年份的块。

\ endgroup美元
8
  • \ begingroup美元 是否容易以某种方式将年份作为一个计数器,这样我们就可以在结束之前知道它在周期中的位置? \ endgroup美元
    - - - - - -JeopardyTempest
    2018年9月8日7:45
  • \ begingroup美元 根据要求,第一个动画被替换为一个有年份标签的动画(并且超过了imgur的2MB限制)。顺便说一句,我认为这只是我的平滑解释了第二个动画的“意外”行为——不知道为什么我当时没有想到这一点。 \ endgroup美元
    - - - - - -约翰Forkosh
    2018年9月8日12:06
  • \ begingroup美元 (还应该说……也许你可以在最后的图形中添加一个日期计数器?) \ endgroup美元
    - - - - - -JeopardyTempest
    2018年9月8日15:23
  • \ begingroup美元 不错的进步。某些天的持续热身和最后一个情节的连续性都很容易成为平滑的人工制品,在一个异常寒冷的日子里,当天的平均水平会保持低9帧。您可以尝试中位数而不是平均值或加权平均值,这通常是处理噪声数据的好方法。 \ endgroup美元
    - - - - - -卡米洛·Rada
    2018年9月8日15:53
  • 1
    \ begingroup美元 你说的日期是“1月1日”…“十二月三十一日”,对吧(也就是说,你没看错)?是的,但是这个动图一开始有点大,加上标签超过2MB(否则我已经上传了)。为了避免这种情况,缩小宽度和高度#像素是微不足道的,但整个图表是基于我对一年中的同一天的年与年相关性的“假想异常”,通过平滑来解释(正如我之前的评论和CR的评论中注意到的那样)。所以我认为动画从一开始就不太有趣——但我错了吗?,也就是说,你想看它的一些原因? \ endgroup美元
    - - - - - -约翰Forkosh
    2018年9月9日6:04
2
\ begingroup美元

在“第一个答案”后面的评论中,JT和CR的建议被包含在下面的动图中。与之前显示的相对应的新版本比之前的版本更“紧张”——它们有一个小bug,如下所示。逐年动画的“基线平均值”,沿x轴为1月1日至12月31日,是所有显示年份中每天的平均值/平均值。但我对平均值的求和发生在我对每日温度进行平滑(通常是9点移动平均值)之后。这可能不是我们想要的,尽管你可能会说这是一个“平滑基线”的合法程序。在任何情况下,gif下方显示的基线都是平滑前的,也就是说,原始的每日温度是所有显示年份的总和,这些生成的动画会更“紧张”一些。

首先,这是现在标记为jan1-dec31的动画(每帧从左到右显示所有年份,代表一年中的一天)。“4x4平滑”标签中的第一个“4”指的是前面讨论的跨天的平滑,第二个“4”指的是跨年的平滑……在这里输入图像描述



其次,CR的中位数建议无论如何都没有多大影响。下面是静态动图,显示了1869年(左)到2017年(右)与平均值/中位数之间的年度偏差……在这里输入图像描述 在这里输入图像描述你可能认为它们是一样的。但是下载这两款软件,然后在它们之间快速点击。中位数“向上平移”了大约1/4^oC美元(我认为这是平均值/中位数的倾斜),而且在一些地方形状略有不同。图。不管怎样,这里是对应的每帧一年(jan1-dec31从左到右)的动画……在这里输入图像描述 在这里输入图像描述



如果你想“玩”这些动画,我已经上传了一个静态链接的linux可执行程序
http://www.forkosh.com/ghcn.exe(忽略类似windows的。exe,它是Linux精灵)
我一直在用的。ly文件在
http://www.forkosh.com/USW00094728.dly
尽管你可以从原始问题中的GHCN链接中得到这个(以及其他无数的。dly文件)。(静态链接的ghcn.exe应该包括所有所需的库/版本,而不是你的特定linux发行版本机安装的,但这并不总是有效。但它确实可以在我的盒子上编译/链接,并在我的ISP的盒子上运行。)

它从命令行运行,最多有9个命令行参数…

/*——命令行参数(所有测试)——*/ int testnum = (argc>1?Atoi (argv[1]): 1);Char *file = (argc>2?argv[2]: "USW00094728. "海底”);/*CntrlPk*/ int msglevel= (argc>3?Atoi (argv[3]): 0);/*——测试#2的命令行参数——*/ char *types =(argc>4?argv[4]: "TMAX");/*"TMIN","TMAX"*/ int years =(argc>5?Atoi (argv[5]): 1869149); /* yyyyNNN */ int meankind =( argc>6? atoi(argv[6]) : 1 ); /*1=avg, 2=median*/ int ndlysmooth=( argc>7? atoi(argv[7]) : 2 ); /*smooth dly tmps*/ int nylysmooth=( argc>8? atoi(argv[8]) : 2 ); /*smooth yly tmps*/ double bigf =( argc>9? atof(argv[9]) : 4.0 ); /*max graph deg C*/

所以我典型的跑步是这样的……
./ghcn.exe 2 USW00094728。海底999年达峰时间186914924 4 4
你的前三个参数,2 USW00094728。海底999年应该总是相同的(除了.dly文件,如果你下载了一些其他文件)。第一个2testnum是唯一的测试生成相关的gif。其他的(实际上只有一个)主要打印一些数据,用于对数据收集和选择函数进行单元测试。和999msglevel将只打印几行,您可以忽略。

其余六个参数可以改变。你取代了我的达峰时间通过TMIN得到相应的动图。(我还没有考虑JT之前建议的包含几种ghcn元素“类型”的动图。)尝试任何其他ghcn元素“类型”(我还没有测试任何)将使用同样的0.1美元缩放因子应用于temps(尽管这很容易生成另一个arg)。

下一个参数是日期加-#年。我的1869149意思是从1869年开始,总共使用149年的数据,在本例中是指1869-2017年(这几乎是整个.dly文件)。的2年之后为CR的平均值/中位数,与1=的意思是,2=值。之后的三个数字,碰巧(但不一定)是一样的4 4 4在我的例子中,是(首先4)用于每日平滑的前后天数,以及(第二4) #天用于年平滑。0因为either/both意味着在这个“方向”上没有平滑。最后,最后一点4是图上显示的基线的$\pm$degreesC。

输出是三个文件:ghcn.gif, ghcn2.gif和(你猜对了)ghcn3.gif。第一个是逐年动画,第二个是逐日动画,最后一个是静态动图,显示了从第一年到去年的平均值/中位数的年平均偏差。

\ endgroup美元

    你的答案

    点击“张贴您的答案”,即表示您同意我们的服务条款隐私政策而且饼干的政策

    这不是你想要的答案?浏览带标签的其他问题问自己的问题