我正在分析一些感兴趣的变量是圆形(角度)的数据。我使用 R 和circular包。
在我的数据集中,每个观察都包含一个 2D 欧几里得矢量,表示平面上的运动(长度不变,只有角度变化),以及对该运动的响应的度量,表示为笛卡尔坐标中的位移(即沿 x 和 y 轴的位移)。我想拟合一个模型,其中初始运动(xy 笛卡尔表示或仅角度,因为长度是恒定的)是响应变量。最终,我想使用拟合模型来估计相关数据集中的初始运动向量,我只知道对运动的响应。
我对运动响应的测量受到噪声的影响,独立于 x 和 y 维度,可能具有不同的方差和不同的附加偏差。为了以图形方式表示问题,我想做的是从噪声测量(细黑色箭头)开始估计原始向量的方向(下图中的灰色粗箭头)。

我尝试过拟合不同的模型:
- 一个预测变量和因变量都是圆形的模型(初始运动矢量的角度,以及从 (x,y) 位移计算的角度)
- 一个多元线性模型,将初始运动的笛卡尔 (x,y) 分量作为因变量,将测量的 x,y 位移作为线性预测变量;
- 一个具有循环因变量和线性预测器的模型(最后一个没有成功)
首先,由于某种我不明白的原因,我无法适应第 3 个模型。我在这里报告一个可重现的例子
require(circular)
theta <- circular(runif(500,0,2*pi),units="radians",type="angles",zero=0,rotation="counter")
rho <- rep(8,500)
# add measurement noise (different for x and y)
mX <- as.numeric(rnorm(500,0,2) + rho * cos(theta))
mY <- as.numeric(rnorm(500,-1,1) + rho * sin(theta))
linearPred <- cbind(mX,mY)
# fit model
mcl <- lm.circular(y=theta, x=linearPred,init=c(1,1), type="c-l",verbose=T)
这是输出:
> mcl <- lm.circular(y=theta, x=linearPred,init=c(1,1), type="c-l",verbose=T)
Iteration 1 : Log-Likelihood = 2.392981
Iteration 2 : Log-Likelihood = 1.082084
Iteration 3 : Log-Likelihood = 0.8013503
Iteration 4 : Log-Likelihood = NA
Error in while (diff > tol) { :
valore mancante dove è richiesto TRUE/FALSE
(最后一行说:需要 TRUE/FALSE 的缺失值)。任何人都可以阐明这一点吗?我不明白这个错误来自哪里。
第二个问题,您建议在前两个中使用哪个模型?这是我用于两个模型的代码
# fit sin(theta) and cos(theta) with a multivariate linear model
mmv <- lm(cbind(sin(theta),cos(theta)) ~ mX+mY)
# "circular-circular" model
angularPred <- circular(atan2(mY,mX),units="radians",type="angles",zero=0,rotation="counter")
mcc <- lm.circular(y=theta, x=angularPred, type="c-c")
我可以从多元拟合值计算角度为atan2(mmv$fitted[,1],mmv$fitted[,2])。两者似乎在平均角度误差方面表现相似。为了比较两者,我计算了预测角度和初始角度之间的相关性theta(Jamlamadaka - Sarma 相关系数),多元模型的表现似乎稍好一些:
fitted.mmv <- circular(atan2(mmv$fitted[,1],mmv$fitted[,2]),units="radians",type="angles",zero=0,rotation="counter")
> cor.circular(fitted.mmv,theta) # multivariate
[1] 0.9851422
> cor.circular(mcc$fitted,theta) # "circular-circular"
[1] 0.7262862
然而,多元模型的残差分布呈现出一种奇怪的模式(下图)。

残差中的这种模式有问题吗?任何人都可以对此提供一些建议吗?在这种情况下,您会使用哪种型号?您会推荐其他任何可能的方法吗?任何建议表示赞赏,谢谢!