【发布时间】:2016-09-04 05:18:25
【问题描述】:
我正在尝试评估两个变量之间的关系随时间的变化。我使用 zoo 包创建了一个 46 年的不规则时间序列对象。我的数据是零膨胀比例,取值 0 和 1。以下是数据:
edf
Year World Ego
1 1760 1.0000000 0.00000000
2 1761 0.3055556 0.00000000
3 1762 0.3950617 0.11814413
4 1764 0.8677686 0.26984127
5 1766 0.0000000 0.00000000
6 1767 0.8580606 0.15407986
7 1769 0.7500000 0.00000000
8 1771 0.7416174 0.37698413
9 1772 0.6611570 0.53587372
10 1777 0.4375000 0.20000000
11 1778 0.9629630 0.36111111
12 1779 0.7229630 0.05291005
13 1781 0.0000000 0.00000000
14 1782 0.0000000 0.00000000
15 1783 0.7500000 0.00000000
16 1784 0.7966605 0.21893984
17 1785 0.8518519 0.12500000
18 1786 0.0000000 0.00000000
19 1787 0.2279036 0.00000000
20 1788 0.7425926 0.08585859
21 1789 0.4648760 0.17942337
22 1790 0.8888889 0.00000000
23 1791 0.7958546 0.35023819
24 1792 0.0000000 0.00000000
25 1794 0.8021333 0.65529337
26 1795 0.0000000 0.00000000
27 1800 0.9900000 0.10825397
28 1802 0.7866667 0.07500000
29 1803 0.0000000 0.00000000
30 1804 0.0000000 0.00000000
31 1805 0.7416026 0.34158521
32 1806 0.9420000 0.47337963
33 1810 0.7500000 0.00000000
34 1812 0.8397279 0.53089503
35 1818 0.4863946 0.31103450
36 1819 0.8636475 0.20591162
37 1820 0.8888889 0.00000000
38 1821 0.7197232 0.60557261
39 1822 0.7308806 0.27126586
40 1823 0.6113805 0.26487719
41 1824 0.6400000 0.00000000
42 1826 0.9086405 0.13932918
43 1827 0.7447051 0.16207173
44 1828 0.9183673 0.40000000
45 1830 0.9843750 0.50000000
46 1831 0.7053061 0.55736111
我正在使用 beta 回归,但使用手册中的建议转换因变量值:
y.transf.betareg <- function(y){
n.obs <- sum(!is.na(y))
(y * (n.obs - 1) + 0.5) / n.obs
}
然后使用 rollapply 计算移动回归。这是我的代码:
library(zoo)
library(betareg)
brol<-as.zoo(edf)
index1 <- rollapply(data = brol,
width = 5,
function(brr) coef(betareg(y.transf.betareg(brr[3])~brr[2],
data=as.data.frame(brr),
na.action = na.omit
),
by.column = F,
align="right"))
但我收到此错误:
Error in optim(par = start, fn = loglikfun, gr = gradfun, method = method, :
non-finite value supplied by optim
当我尝试将线性样条回归与 betareg 一起使用时,我得到了同样的错误。
我编写的代码适用于我尝试过的其他模型,例如带有 logit 链接的二项式 GLM 或 GAMLSS,但不适用于 betareg。
通过一些研究,似乎传递给函数的每条数据可能不是满秩的,但我不知道如何处理。任何人都可以建议吗?非常非常感谢。
【问题讨论】:
标签: r time regression