- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有以下数据:
Lines = "20/03/2014,9996792524
21/04/2014,8479115468
21/09/2014,11394750532
16/10/2014,9594869828
18/11/2014,10850291677
08/12/2014,10475635302
22/01/2015,10116010939
26/02/2015,11206949341
20/03/2015,11975140317
09/04/2015,11526960332
29/04/2015,9986194500
16/09/2015,11501088256
13/10/2015,11833183163
10/11/2015,13246940910
16/12/2015,13255698568
27/01/2016,13775653990
23/02/2016,13567323648
22/03/2016,14607415705
11/04/2016,13835444224
04/04/2016,14118970743"
我将其读入 R:
z <- read.zoo(text = Lines, sep = ",", header = TRUE, index = 1:1, tz = "", format = "%d/%m/%Y")
我希望对数据进行插值,以便将这个间隔不规则的时间序列转换为常规时间序列。时间间隔只要有规律即可,但每月、每周或每两周一次都可以。
如何在 R
或 Matlab
中执行此操作?
注意:我意识到内插值可能不是很准确并且可能会歪曲信息,但是我需要学习如何做到这一点并且我可以接受失去一些准确性。
最佳答案
好的,首先,警告一句:如果你要插值然后执行测试或一般统计估计,你的结果将(严重)有偏差,除非你有一些充分的理由(领域知识?)假设您的插值方法将生成来自原始点的相同分布的点。不,“情节看起来不错”不是评估这个的好标准:)话虽如此,让我们来看看数据:
# Lines contains your data
library(zoo)
fmt <- "%d/%m/%Y"
z <- read.zoo(text = Lines, sep = ",", header = TRUE, index = 1:1, tz = "", format = fmt)
t <- time(z)
plot(z,type="p",xaxt="n",pch=19,col="cyan",cex=1.5)
labs <- format(t,fmt)
axis(side = 1, at = t, labels = labs,cex.axis = 0.7)
看起来您丢失的大部分数据都与 2014 年夏季和 2015 年夏季有关。我很想知道这些数据是什么...无论如何,看起来您的大部分数据至少间隔了 2 周:
diff(t)
# Time differences in days
# [1] 153 25 33 20 45 35 22 20 20 140 27 28 36 42 27 28 13 7
因此,让我们通过首先创建一个虚拟 zoo
对象来插入每两周一次的系列:
t.biweekly <- seq(from = min(t), to=max(t),by="2 weeks")
dummy <- zoo(,t.biweekly)
将虚拟系列与您的系列合并:
z.interpolated <- merge(z,dummy,all=TRUE)
如果您查看新系列,您会发现 dummy
的所有时间都有 NA 值,而在 z
中没有相应的时间。让我们用线性插值填充这些点并查看结果:
z.interpolated <- na.approx(z.interpolated)
plot(z.interpolated, type = "b")
points(z,pch=19,col="cyan",cex=1.5)
瞧!请记住,从这个东西中构建推理模型是一个坏主意......
关于r - 如何在 R 或 Matlab 中将这个不规则间隔的时间序列转换(插值)为规则间隔的时间序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38723185/
negExpression : (NOT^)* primitiveElement ; 是我的规矩。我现在有这个代码: !!(1==1) 我希望我最终会得到这棵树: NOT | NOT
我遇到以下问题,我正在创建一个作为预算副本的表单,但这种类型的预算不包含增值税%,并且商品不会通过会计。 问题如下我创建了一个名为budget.table的模型如下: class TableEleme
我对 Java 相当陌生,但对一般编程不太熟悉。我在 Windows Vista 上使用 Java 1.7.0_07。我正在尝试弄清楚如何使 Swing Timer 定期计时。 我注意到,即使我设置了
我有一个静态站点,它突然显示不规则的标题。这是一个包含大量 JavaScript 的单一页面,包括页面顶部的表格选择。该网站六个月前运行良好。现在,我在 12 个不同的导航选项卡中的一半上看到无法解释
在我参加的 CS 类(class)中,有一个不规则语言的例子: {a^nb^n | n >= 0} 我可以理解它是不规则的,因为没有有限状态自动机/机器可以编写来验证和接受此输入,因为它缺少内存组件。
给定以下高频但稀疏的时间序列: #Sparse Timeseries dti1 = pd.date_range(start=datetime(2015,8,1,9,0,0),periods=10,fr
我有 X、Y、Z 格式的数据,其中所有数据都是一维数组,Z 是坐标 (X,Y) 处的测量幅度。我想将此数据显示为等高线或“imshow”图,其中等高线/颜色代表 Z 值(幅度)。 用于测量和 X 和
这是 Stackoverflow 上的一个递归问题,但给出的解决方案 here仍然不完美。对我来说,屈服仍然是 python 中最复杂的东西之一,所以我不知道如何自己修复它。 当给定函数的任何列表中的
我使用 PHP 5.3.3 在 RHEL 6 服务器上部署了一个 symfony 1.4 项目。我不定期地在 php 错误日志中收到条目,提示找不到 sfProjectConfiguration 并且
我是一名优秀的程序员,十分优秀!