R中具有循环数据的线性模型

时间:2018-06-28 16:28:09

标签: r regression

我有一个圆形因变量(以弧度为单位)和一个线性独立变量(以年为单位),我想彼此进行建模并提取一个斜率值。我一直在尝试使用lm.circular软件包中的circular,但是有些事情我不理解。

首先,我不了解init参数的作用。帮助状态:

  

一个初始值的长度等于x列的向量

但是,如果我们查询lm.circular并查看给定的示例,该示例具有圆形因变量和线性独立变量:

x <- cbind(rnorm(10), rep(1, 10))
y <- circular(2*atan(c(x%*%c(5,1))))+rvonmises(10, mu=circular(0), kappa=100)

lm.circular(y=y, x=x, init=c(5,1), type='c-l',verbose=TRUE)

这里x有2列,每列10个值,但是在模型中initc(5,1)。这是如何运作的?为什么x总共有2列?

如果我运行数据(将x的init设置为1的列设置为1),则它运行时没有错误,但与示例模型相比需要花费时间:

x2 <- as.numeric(c(2001:2014))
y2 <- as.circular(c(-2.68666257, 2.89266865, -2.46348932,  0.29184194,
                   -2.76391485,  0.04291793, -2.44632215, -2.88408506,
                   -1.21886928, -2.78108202, -2.96133734, -2.85833430,
                   -2.90125223,  0.37767781))

m1 <- lm.circular(y = y2, x = x2, type = "c-l", init=1)

summary(m1)

             Length Class    Mode   
x            14     -none-   numeric
y            14     -none-   numeric
mu            1     circular numeric
se.mu         1     -none-   numeric
kappa         1     -none-   numeric
se.kappa      1     -none-   numeric
coefficients  1     -none-   numeric
cov.coef      1     -none-   numeric
se.coef       1     -none-   numeric
log.lik       1     -none-   numeric
t.values      1     -none-   numeric
p.values      1     -none-   numeric
call          4     -none-   call  

作为一个实验,我用数据中的前10个xy值替换了示例中的值,但立即收到错误消息:

x <- cbind(rnorm(10), rep(1, 10))
y <- circular(2*atan(c(x%*%c(5,1))))+rvonmises(10, mu=circular(0), kappa=100)

x[,1] <- as.numeric(c(2001:2010))
y <- y2[1:10]

lm.circular(y=y, x=x, init=c(5,1), type='c-l',verbose=TRUE)

Iteration  1 :    Log-Likelihood =  NA 
Error in while (diff > tol) { : missing value where TRUE/FALSE needed

尽管我的模型似乎运行正常,但我不确定我已经了解了lm.circular函数,因此我的模型并不是胡说八道。如果有人能够帮助我理解功能和特殊性init,我将不胜感激。

最后,我真正想要的是将交互融入模型中,但是我还没有找到使用lm.circular进行交互的方法。我本质上想运行,其中y是圆形的:

glm(y ~ x * z)

有没有办法做到这一点?

0 个答案:

没有答案