我有一个圆形因变量(以弧度为单位)和一个线性独立变量(以年为单位),我想彼此进行建模并提取一个斜率值。我一直在尝试使用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个值,但是在模型中init
是c(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个x
和y
值替换了示例中的值,但立即收到错误消息:
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)
有没有办法做到这一点?