编者按:这个文件被选为MATLAB中心本周精选
Matlab的Cirstat
=======================.
使用Matlab的循环统计工具箱。
作者:菲利普焦点
电子邮件:philipp@bethgelab.org
主页:http://philpberens.wordpress.com/code/circstats/
贡献者:
马克·贝拉斯科,Tal Krasovsky
参考:
P. Berens, CircStat:循环统计的Matlab工具箱,统计软件学报,第31卷,第10期,2009
http://www.jstatsoft.org/v31/i10
使用提供的代码时请引用本文(不是技术报告!)详情请参阅许可条款。
内容:
合成向量长度
circ_mean循环数据样本的平均方向
轴向数据的平均方向
circ_median循环数据样本的中位数方向
在平均方向上的分散(std, mardia)
circ_var圆形方差
circ_skewness圆形偏态
circ_kurtosis圆峰态
circ_moment第p个圆矩
一圈一圈的距离circ_dist
circ_dist2绕圆的成对距离
circ_confmean平均方向的置信区间
circ_stats汇总统计
非均匀性的瑞利检验
Hodges-Ajne非均匀性检验(综合检验)
circ_raotest饶对间距不均匀性测试
circ_vtest V-试验不均匀性与已知的平均方向
circ_medtest试验中间角
对指定平均方向的一个样本检验
多样本等均值检验,单因素方差分析
circ_hktest双因素方差分析
等浓度参数的检验
circ_symtest中值角的对称性检验
检验两个分布是否相同(如KS检验)
圆-圆相关系数
循环线性相关系数
circ_kappa虚拟机分布的浓度参数
circ_plot循环数据可视化
circ_clust用于循环数据的简单集群
求一个角度样本的CDF值
rad2ang转换弧度到角度值
ang2rad转换角度到弧度值
所有功能都采取以弧度参数(期待ang2rad)。有关参数和输出的详细说明请参阅在文件中的帮助文本。
自2010年以来,大多数描述性统计函数都可以用于Matlab风格的矩阵计算。作为最后一个参数,添加你想要平均的维度。与之前的版本相比,这稍微改变了行为,因为输入不再被重塑为矢量格式。默认情况下,所有计算都按列执行(沿维度1)。
引用:
- E. Batschelet,《生物学循环统计》,学术出版社,1981年
- N.I. Fisher,《循环数据的统计分析》,剑桥大学出版社,1996年
- S.R.Jammalamadaka等,循环统计的主题,世界科学,2001年
- J.H. Zar,生物统计分析,Prentice Hall, 1999
如果你有建议,错误或功能要求或想贡献代码,请发邮件给我。
菲利普焦点(2021)。循环统计工具箱(方向统计)(//www.tatmou.com/matlabcentral/fileexchange/10676-circular-statistics-toolbox-directional-statistics), MATLAB中央文件交换。检索.
启发:循环互相关
启发:瑞利统计工具箱家族,Alphonse:Rex - 手写和印刷专业知识,kuipertest2,圆形corcoeff,圆形数据的核平滑密度估计,pierremegevand / watsons_u2,圆函数的核密度估计,Seis_Pick,局部形状轮廓方向描述符,CSKMorphometrics
你好,
我有一个关于你的平均函数的问题circ_median, circ_mean:哪个区间函数是有效的?我想平均我的仰角和方位角(球坐标),然而,仰角定义为[0,Pi],而方位角定义为[-pi, Pi]。我看到你们的函数使用了mod函数。当我使用仰角时,是否需要将所有的mod函数从2改为Pi ?
谢谢你!
感谢分享这个工具箱!这真的很有帮助。然而,有时我得到以下错误消息由于数组大小和缓存问题:
错误使用repmat
请求44551x44551(14.8GB)阵列超过最大数组大小偏好。数组大于这个创作
限制可能需要很长时间,并导致MATLAB变得无响应。
circ_dist2错误(第35行)
R =角度(exp(1i*x),1,长度(y))…
circ_median错误(第69行)
dd = circ_dist2(β,β);
我想知道是否有可能通过改变代码语法来避免这个问题,因此没有如此大的缓存使用?
再次感谢你的分享和帮助。
马克斯
你好,伟大的工具箱。
但我总是得到以下警告:
警告:测试不适用。平均得到的矢量长度<0.45。
你能解释一下为什么会发生这种事,我该怎么解决?
这个工具箱填补了matlab统计工具的空白,并提供了伟大的文档。伟大的工作。
[1]https://www.jstatsoft.org/article/view/v031i10
[2]http://citeSeerx.ist.psu.edu/viewdoc/download?doi=10.1.1.520.8689&Rep=rep1&type=pdf.
谢谢你的分享。哪个函数计算次要特征值和主要特征值?
你好,
这些函数非常有用,因为我对循环统计非常陌生。
一个问题,我想计算一个从-到的相位值向量的圆均值和95% CI。Circ_mean计算mu很好,但是我的上限/下限返回nan和消息
警告:不符合置信水平的要求。
>在Circ_Confean(第70行)
在circ_mean(第53行)中
在Phase_Lock_Recall(线150)
你能帮我吗?值需要从0开始吗?
谢谢你!
PAK
这是我遇到过的最精彩的代码之一。通过代码中的等式的编号来印象深刻。非常感谢您的贡献!
嗨,我是在cthis主题行新的,但你能帮助我产生与对冯米塞斯分布的混合物= [0.3 0.7],亩= [1.5pi 3.2pi]和kappa = [3.6 2.8]我想circ_vmrnd功能仅输入平均方向和concetration参数。非常感谢
谢谢,我现在可以轻松地计算圆形中位数了!然而,我看到以下警告:
警告:侦测到的关系。
>在Circ_Median(第58行)
你能告诉我这是什么意思吗?
这些是奇妙的代码!帮助了我很多!谢谢!
我对群集函数circ_clust有一个问题。我认为它有问题。例如,我试图使用[0 0 pi pi pi pi]来获得两个群集。但我没有得到CID作为[1 1 1 2 2 2]。相反,我得到了cid = [1 2 1 1 1 1],对我来说非常奇怪。你能检查一下代码并添加更多关于它的解释吗?先感谢您。
你好
谢谢你的工作,真正的用途和简单的使用!
你好,
谢谢你的工作!我注意到circ_median函数有一个问题。在第54行,如果有两个以上的元素等于m,您可能会计算出一个不准确的平均值。用“idx = find(dm==m,n);”来替换似乎更好一些。
最好的事物
丹尼尔·德·Malmazet
你好,
我的指示以北方表示,但有可能使用Circ_corr函数来计算相关性,或者您必须以东程度进入吗?
谢谢提前
你好
关于formatSubplot功能,你能帮我一下吗?我找不到她。非常感谢
抱歉,之前的评分是一个错误,直到同事指出我才发现!
嗨,菲利普,
在circ_vmpdf函数的第45行中,它当前说这个-
C = 1 /(2 *π* bessi0(κ));
我认为它应该是贝塞利(0,kappa)?
@Adrian Bondy,你是真正的MVP
非常有趣......但是Circ_r和Circ_stats(以及可能是其他功能)如果输入数据中有任何NaN,则返回“NaN”!这应该至少在文件中明确提及。
太棒了,谢谢你把这些放在一个地方。
你好,
我得到一个错误与circ_wwtest说:“警告:测试不适用。平均合成向量长度小于0.45检查假设行109"
我使用的数据点来自两个不同的角度数据的玫瑰图。
有人能帮忙吗?
谢谢!
@andrea bertana:你不喜欢什么?
把角度转换成弧度,得到一个长矢量。你需要额外的向量:因子1和因子2。在您的例子中,factor1表示目标,值为1、2和3。因子2是条件,取值为1和2。
你好,
我目前正在分析一些由角数据组成的数据。因此,我尝试使用循环统计工具箱中的以下函数:
[p,F] = CircularANOVA(角度,[factor1 factor2],方法)
下面还提供了示例数据。对于如何使用这个函数,我们将非常感激
数据:
目标1目标2目标3
条件1 30.0 40.0 50.0
条件1 40.0 50.0 30.0
条件2 30.0 34.0 25.0
条件2 20.0 34.0 30.0
亲爱的所有,
请不要在GitHub上进行特征请求,错误修复或性能改进https://github.com/circstat/circstat-matlab.
谢谢你!
完美的工具箱,很有帮助。我缺少的是协方差的实现(类似于matlab中的“cov”函数)。有没有可能加上这个?
我有一个关于如何使用circ_hktest函数的问题。我想用它来分析不同组脊髓损伤后不同时间点运动时右腿运动与左腿运动相关系值均值的差异。数据来自几个科目,所以当我把所有的数据在一个专栏中,自由度的数量是一致的组织和时间点我在实验设计中把错误匹配的总数pha关系我有价值,等于所有科目所采取的步骤的数量,这没有意义。F也很高,因为我认为测试混合了学科内和学科间的可变性。我理解对了吗?谢谢你帮助我使用你伟大的工具箱!
谢谢你的伟大工具箱。
我对它在神经科学上的应用有疑问。我有低放电细胞(3Hz以上自发),看起来很有方向性(CV = 0.3),但它没有通过瑞利测试(p = 0.07)。我注意到在瑞利测试中使用的权重大小(峰值率)会影响结果——如果我将峰值率乘以100,结果就非常显著,所以它似乎对低放电细胞不起作用?
然后,我尝试使用每次试验的射击率,而不是每个方向的平均射击率,你的例子似乎使用了。结果现在很高。
你对处理低解雇率有什么建议?使用试用率还是平均率更合适?
伟大的工作!
我正在计算角度的标准差。
有办法用这个工具箱做到这一点吗?
谢谢!
alb
你好,谢谢你所有的工作把它放在一起。我有个问题。
在脚本'circ_wwtest'中,会检查一组假设。样本大小和平均向量长度是参数。我想知道这样做的理由是什么。f测试的结果(例如在一个非常大的样本上)是否会超过任意的、硬编码的假设?
如果你有参考资料或这些假设的数学原因,请告诉我。:)
谢谢你!
我已将Circstat Toolbox添加到GitHub,并希望您将所有功能请求和错误报告添加到那里。
https://github.com/circstat/circstat-matlab
如果你修复了bug,你也可以创建pull请求,我将合并它们。
如何在Matlab中安装此工具箱?
Circ_VMPDF对大型Kappa(> 700用于双精度返回NaN)的数值稳定性具有严重问题。
这是因为代码试图显式地计算von Mises公式中的贝塞尔函数,这对于大的kappa是难以处理的。这是不必要的,因为最终要计算的是贝塞尔函数和分子中的一个大数之间的比率。通过调用带有附加参数的贝塞尔函数:
BESSELI(0,κ,1)
MATLAB计算数字稳定的贝塞尔函数和exp(kappa)的比率。
然后你可以简单地将最后两行替换为:
P = exp(kappa*(cos(alpha-thetahat)-1) / (2*pi*besseli(0,kappa,1));
这在机器精度内产生相同的结果,对于大的卡帕是数值稳定的。
谢谢你的伟大工具箱。
我一直在尝试使用circ_clust函数。然而,我一直得到以下错误消息:
在分配a(i)= b中,b中的元素数量和我必须相同。
circ_clust错误(第53行)
μ(j) = circ_mean(α(cid = = j) ');
你能告诉我如何克服这个问题吗?
伟大的计划。
我在circ_vmrnd程序中发现了一个小的不一致。在第50行,应该是:
α= 2 *π*兰德(n, 1) -π;
目前“-PI”不在代码中,这意味着对于kappa的大值,分布在间隔(-pi,pi)上取值,而对于kappa接近0,它会在(0,2pi)之间取值.
这是一个伟大的工具箱。但是,我有一个问题与circ_corrcl,或者也许我误解的正确使用方法。当我给它完全相关的数据,我没有得到RHO = 1:
circ_corrcl (linspace(π-π,1000),linspace (0, 1000))
ans = .7785
我注意到这一点,当我试着找出值的符号时(根据函数的定义,值总是正的)。不幸的是,我没有Zar文本的副本可用。
不可缺少的
你是说"circ_rtest瑞利非均匀性测试"这不是你想要的吗?
@ Wasim马利克。我相信工具箱fieldtrip已经有了它,但是它们的实现有点麻烦。
在快速外观上,摩尔瑞利试验均匀的矢量数据(B.R. Moore,Biometrika,1980)似乎在这个工具箱中似乎没有可用。Philipp,你有计划的计划吗?或者,有谁知道该测试的MATLAB实现是否可以在其他地方提供?谢谢。
大家好!
我有一个关于circ_plot.m问题;当我执行此代码的角度出现从0到360度。
我只想表示0到180之间的值。我该怎么做呢?提前谢谢!
实际上,忽略我提供的inverse_cdf函数。它应该为kappa生成一个值,它需要为thetahat的值而不是零进行调整。
伟大的提交。如果vmpdf函数有cdf和反转cdf,那就太好了。这是我根据自己的需要写的
函数p = circ_vmcdf(alpha, theta, kappa)
%集成PDF从角度-pi到角度alpha
F = @(x)circ_vmpdf(x, thetahat, kappa);
p =四(F -π(),α);
结束
函数= circ_vminv(p, theta, kappa)
%计算上面irc_vmcdf的倒数。
Fun =@(alpha)(circ_vmcdf(alpha, thetahat, kappa)-p);
THETA = fzero(乐趣,[ - PIπ);
结束
你好,
感谢伟大的贡献。
你能告诉我是否可以得到负的平均值或中值吗?
我应该将360加入最终角度,使其正常吗?
欢呼,
9月
谢谢你的工具箱。
有人知道怎么用循环数据做多元回归吗?
大家好!
关于circ_hktest的一个小问题-我经常在'Interaction'行中得到nan作为输出。知道我哪里做错了吗?
提前感谢你的帮助。
关于你对wwtest的怀疑,你能更具体一点吗?
Circ_mean的负值是Circ_Mean实现的结果。如果您更喜欢它们在0到2PI之间,只需编辑“功能”以提供该格式的数据。
我将在未来的版本中更新von Mises函数。
关于circ_mean函数,我有一个简单的问题:尽管所有的输入角都是正的(转到rad),但我通常得到的结果都是负数。将它转换成[0,360]度并不是什么大问题,但它有点烦人,似乎没有必要。应该是这样吗?我还得到了wwtest的一些结果,在我看来是非常错误的(但根据负的平均值是有意义的),这使我怀疑这个工具箱的准确性。
Marc,谢谢,你是对的。
我生成了一个von mises分布,其中mu和kappa是从我的角度估计的,比如x,即:
[mu kappa] = circ_vmpar(x)
进而
vonmis = circ_randvm(μ,卡帕,长度(x))
然后我使用Kuiper测试来查看两个分布x和vonmis是否有显着差异(差异可以在任何属性中,例如平均,位置和色散):
[H,pValue] = circ_kuipertest(x, vonmis)
然而,我想知道是否有可能在柯伊伯测试中有更精确的p值估计,就像之前另一个用户已经问过的那样。
亲爱的马克,
谢谢你的建议,不过我不太相信。
无论是circ_ktest和circ_kuipertest未在PDF中描述:
http://www.jstatsoft.org/v31/i10/paper
总之,circ_ktest是一个参数双样本检验,用来确定两个浓度参数是否不同。
Circ_Kuipertest是一个两个样本测试,允许测试两个输入样本是否有显着差异。差异可以在任何财产中,例如平均位置和分散。它是Kolmogorov-Smirnov测试的圆形类似物。
我不明白如何将这些测试可以帮助我优度适合测试的米塞斯 - 费舍尔分布,但可能是我的极限了。
任何人都可以是任何帮助吗?
问候,
塞吉奥
Sergio - 你有没有看到PDF的描述?(http://www.jstatsoft.org/v31/i10/paper)
你可能想要kuipertest中的ktest。
大家好,我是循环统计的新手,我下载了这个包。
鉴于一些载体,我想测试,如果它们分布遵循米塞斯 - 费舍尔分布。
您是否知道我应该使用的包的说明?
你能帮助吗?
一些测试后,我想通了以前的错误与数据的唯一值的复发有关。我照顾它通过使用
alpha = alpha + 0.00001 *(1:numel(alpha)),但这显然是一个解决方案,这对于自尊算法并不令人满意。
无论如何,我忘了提到这个工具箱的伟大。这是一个很大的帮助,并拯救了我很多时间和工作。
嗨,我使用circ_clust遇到了错误的聚类。
例如,如果我输入circ_clust([1 1 1 1 3.5 4 5.5 0.5],2)
我得到
ans =.
1
2
1
1
1
1
1
1
有时集群确实起作用,但我不知道为什么它会起作用……
我正在使用matlab 2012b ...
伟大的工具箱。我想知道是否有可能在柯伊伯测试更准确的p值的估计?
你好,
伟大的工具箱,谢谢。
顺便说一下,我同意Allan的评论(见下文),关于Von Mises分布,有一个具有更高数值稳定性的实现可能是有用的。特别地,我添加了这个简单的函数,它返回Von Mises分布的log-pdf:
函数[Pα= circ_vm_logpdf(α,thetahat,κ)
%如果没有提供角度,则圆周围100个均匀间隔的点
%选择
If nargin < 1 || is空(alpha)
Alpha = linspace(0,2 *pi, 101)';
α=α(1:end-1);
结束
如果nargin < 3
k = 1;
结束
如果nargin < 2
thetahat = 0;
结束
alpha = alpha(:);
%评估pdf
C = -log(2*pi*besseli(0,kappa));
p = C + C *cos(alpha-thetahat);
由于更大的数值稳定性log-pdf经常被用来代替pdf,所以这个小功能可能对其他人有帮助…
嗨,伟大的工具箱。我提出了一个改变,以避免在Circ_VMPDF中的数值不稳定。
当前代码评估pdf:
c = 1 /(2 * pi *贝塞尔(0,kappa));
p = C * exp(kappa*cos(alpha-thetahat));
建议替换代码:
C =日志(1)日志(2 *π* besseli (0 k 1)) + k (k * cos (alpha-thetahat));
p = exp (C);
例子:
circ_vmpdf (0, 0, 1000)
旧代码结果:NaN
新的代码结果:12.6141
瑞安,平均值在最简单的情况下的点产品W'* exp(......)是一个 - 所以这是Sum操作。EXP(I *角度)将角度分解为其正弦和余弦组件。最后,角度是atan2。比较你和我的代码的结果 - 它们应该与我的代码相同,因为矩阵样式计算由于矩阵样式计算而运行一点。
Bst
菲利普
我还没有穿过这个工具箱,所以如果我错过了这个问题的东西,我很抱歉(我只是通过源代码瞥了一眼,因为我对定向统计数据感兴趣)。
当你计算平均值时,你使用的公式是:
%计算CoS和角度的罪的加权和
r = w'* exp(1i * alpha);
获得平均数
mu =角度(r);
现在,如果我错了,请纠正我,但这似乎根本没有计算平均值?在我看来,这里我们正在将数据阵列输入到角度命令,这将输出该阵列的每个元素的相位角,而不是单数平均值。
计算平均值的更好方法不是使用atan2吗?喜欢的东西:
对于I = 1:w
S(1)= SIN(α(i))的;
c(i)= cos(alpha(i));
结束
X =总和(S) * (1 / w);
Y =总和(C)*(1 / W);
mu = atan2(x,y);
感谢伟大的工具箱!我有一个问题:我有一组相互关联的定向随机变量。我已经使用circ_corrcc构建这些变量的相关性矩阵,但我也有兴趣在他们的协方差矩阵。似乎没有成为这样的功能在当前的工具箱。
由于没有任何循环统计的经验,我想知道通过对相关矩阵进行非标准化,将每个元素乘以两个相应的循环标准差,来构造协方差矩阵是否有意义?也许协方差矩阵是工具箱中有用的补充。
谢谢,
Marnix
你好,弗朗西斯科,如果你有方向,把所有方向乘以2得到方向。如果你想得到平均的合成向量,再把它的方向除以2。
请原谅我之前的帖子!我才意识到p轴的真正含义。
为了进一步参考,这将解决先前引用的问题
%均匀分布试验
%,在区间[0,180)
Y180 = circ_axial(circ_ang2rad(0 + 179*rand(4000,1)),2);
p180 = circ_otest (y180)
%,在区间[0 360)
Y360 = deg2rad(0 + 359*rand(4000,1));
P360 = circ_otest(y360)
请原谅我之前的帖子!我才意识到p轴的真正含义。
为了进一步参考,这将解决先前引用的问题
%均匀分布试验
%,在区间[0,180)
Y180 = circ_axial(circ_ang2rad(0 + 179*rand(4000,1)),2);
p180 = circ_otest (y180)
%,在区间[0 360)
Y360 = deg2rad(0 + 359*rand(4000,1));
P360 = circ_otest(y360)
我正在测试工具箱没有太多的先验知识的主题。这似乎是一个非常好的软件,它帮助我掌握了一些理论。
我有一个问题:如果我处理的方向超过方向[0 360),是否有一个正确的方法可以在工具箱中使用该功能之前变换可以数据?
例如,如果我试图测试一个均匀分布在[0 180]的总体的圆形均匀性——我希望有一个p>0.05——我得到了一个非常小的值,这与整个区间的测试是一致的。
建议?谢谢
弗朗西斯科
---示例代码----
Y180 = circ_ang2rad(0 + 179*rand(4000,1));
p180 = circ_otest (y180)
%,在区间[0 360)
Y360 = deg2rad(0 + 359*rand(4000,1));
P360 = circ_otest(y360)
伟大的工具箱!这正是我所需要的。然而,我的数据有许多NaN—您有办法处理带间隙的数据吗?
这是一个非常有用的工具箱。一些bug报告:
1.formatSubPlot调用“parseVarArgs”,这不是标准的matlab,也不是这个工具箱的一部分。你能不能给我一个下载地址的指示?
2.在示例2中,描述性统计单元格需要更新以尊重矩阵样式的计算。因此,第67行应该是:
统计数据(我,1)= circ_mean (ori spk 2);
其他代码行也是一样的。
谢谢你支持这个工具箱。金宝app
我确认Dillon关于circ_wwtest bug的报告。
Great Toolbox,但我认为Circ_wwtest.m的逻辑中存在错误 - > checkassumption()第107-115行。
代码目前是这样的:
If n > 10 && rw<.45
警告(“测试不适用。平均合成向量长度< 0.45.')%#ok
mapname = " mapname "; mapname = " mapname "
警告('测试不适用。平均每个人群的样本数<11和平均结果矢量长度<0.5。')%#OK
ELSEIF N> = 5 && RW <0.55
警告(“测试不适用。每个群体的平均样本数量< 7,平均合成向量长度< 0.55.')%#ok
case " mapname ": n < 5
警告(“测试不适用。每个总体的平均样本数< 5.')%#ok
结束
注意,if/else语句与警告文本不匹配。特别是当n>5时,当结果向量rw<0.55时,用户总是会收到警告,警告没有捕获到这个值。更正后的if/else语句如下:
如果n> = 11 && rw <.45
警告(“测试不适用。平均合成向量长度< 0.45.')%#ok
elsef n <11 && n> = 7 && rw <.5
警告('测试不适用。平均每个人群的样本数<11和平均结果矢量长度<0.5。')%#OK
Elseif n<7 && n >=5 && rw<.55
警告(“测试不适用。每个群体的平均样本数量< 7,平均合成向量长度< 0.55.')%#ok
case " mapname ": n < 5
警告(“测试不适用。每个总体的平均样本数< 5.')%#ok
结束
我假定警告声明是正确的,但如果if / else语句是正确的,将是更紧凑,以警告用户只有2个条件:N <5和RW <0.55。
再次感谢非常有用的工具箱。
谢谢你最近的反馈和报告。我离开了一段时间,很快就会开始照顾他们。
建议增加:
参数和非参数配对样本检验,Zar(2010)生物统计分析,第27.13和27.14节
对不起,行号错了。错误在第169行!
在函数circ_hktest.m
pI = 1 - chi2pdf(chiI, df_i);
它应该是
if (c = 1, d = 1, d = 1);
伟大的工具箱。
伟大的工具箱!
我在circ_hktest函数中发现了一个错误。M在第160行
pI = 1 - chi2pdf(chiI, df_i);
它应该是
if (c = 1, d = 1, d = 1);
非常感谢您对这样一个有用的工具箱。现在,我有相关的circ_ktest(二smple检验比较浓度)的问题。F统计量被定义仅在RBAR的情况下> 0.7,Mardia(PAG 133,1999)的情况下计算F其中合成矢量长度为<0.45:
N1 =长度(α1);
N2 =长度(α-2);
r1avg = circ_r(alpha1);
r2avg = circ_r(alpha2);
R1 = n1 * circ_r(α);
R2 = n2 * circ_r (alpha2);
%确保rbar> .7
rbar = (R1 + R2) / (n1 + n2);
如果rbar> .7
F =((N2-1)*(N1-R1))/((N1-1)·(N2-R2));
elseif rbar< . 45%取自Mardia 1999 p.133(Baschelet报告:Mardia 1972,第161页)
为g11 =最佳翻译(2 *倍根号(3/8)* (R1avg));
G12 = ASIN(2 * SQRT(3/8)*(R2AVG));
f =(2 /√(3))* ((g11 g12) / (1 / (n1-4) + 1 / (n2-4)。^ (1/2));
但是这里样本1和样本2定义了F的符号。S1和S2的定义依赖于Ravg值S1>S2来计算f,对吗?
谢谢你!
纳塔莉亚
伟大的工具。
我不得不说,circ_mtest是有点怪。
输入为[pval, z],但输出设置为[h,mu,ul,ll]
感谢这个出色的工具箱!
我下载的示例文件只有一些问题http://www.jstatsoft.org/v31/i10
例1:
???未定义函数或方法'parseVarArgs',因此图2不完整,它没有轴标签。
例2:
???使用==> mtimes时出错
内矩阵维数必须一致。
错误在==> example2在42
zm评选= r * exp(我*φ);
也许没有点,但是修改后zm = r.*exp(i*phi);同样的错误发生:
???未定义的函数或方法'parseVarArgs'
有人能帮我解决这个问题吗?
非常感谢!
@Christopher:非常感谢您的善意和帮助。对此,我真的非常感激。
确实是应该的,当我仔细地遍历这个函数时,有时结果是正确的,有时不是,这在某种程度上取决于alpha中的数字。要修复这个问题,请访问circ_median (ver 2011f)的第45和46行。你看到两个不等式,dd>=0和dd<0。为了一致性和正确的结果,两个不等式应该是相同的。编辑第46行以读取:
m2 =总和(dd < = 0,1);
现在这个函数的行为似乎和预期的一样。
我是循环统计方面的新手,所以不要嘲笑我。但是我对circ_median()函数有一个问题。
假设我有一个包含6个角度的数据集[0.1 0.2 0.3 0.4 0.5 0.6]。当我将这些数据输入到circ_median()时,该函数返回一个中位数= 0.4
我认为,当一个数据集包含偶数个观察值时,中位数将被计算为中间两个数的平均值(即(0.3+0.4)/2 = 0.35)。
下面列出了我的代码。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Alpha = [0.1 0.2 0.3 0.4 0.5 0.6]';
地中海= circ_median(α)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
谁能帮我这个?
真诚地,
Fuh
谢谢你的评论。
@Christopher:在最新的MATLAB版本中,~作为一个占位符引入,用于不需要的输出参数。我将在下一次上传时回到某个虚拟变量。
@Heida:我没有看到一种简单的方法,可以使用所实施的功能来做你的建议。
@Omzaz:多样本测试假设有独立样本。我不知道循环数据的重复测量方差分析等。如果有发现请告诉我。
忽略NANS的选项......我认为这是一个棘手的事情,因为你总是做出一个特定的选择NANS如何处理,每个用户可能具有不同的偏好。我会考虑一下。
这个工具箱中的任何一个多样本测试都可以用于重复测量数据,还是它们都假定是独立的样本?
非常有用的工具。在计算中忽略nan选项会使它变得更好。
好的工具箱!我在这里添加了一个函数用于循环数据的核平滑密度估计://www.tatmou.com/matlabcentral/fileexchange/32614-kernel-smoothing-density-estimate-for-circular-data.
谢谢大家,这个工具箱真的很有用,很容易使用。
我有一个关于数据的问题——原谅我,这不是一个关于工具箱的直接问题,但也许有人可以帮助我。
我重复测量了多个参与者的循环数据,假设15个参与者,每个参与者贡献4个角度。我有理由相信角分布是多极的,而不是米塞斯分布。这本质上需要某种非参数重复测量测试,我不确定是否为循环数据开发了这种测试。是否有一种方法可以通过使用circstat工具箱中的程序来测试这个数据集中的圆形均匀性,也许使用某种p值校正?
嗯,我的评论发生了什么?我写的是,在2011F的前进,似乎在Circ_kuiphertest中介绍了拼写错误。2010年,文件中的第48行读取:
[phis2 cdf2 phiplot2 cdfplot2] = circ_samplecdf(alpha2, res);
在2011f版本中,这一行是这样写的:
[〜,cdf2 phiplot2 cdfplot2] = circ_samplecdf(α-2,RES);
和matlab抱怨错误的陈述或表达式。
抱歉,错误在circ_kuipertest。米,而不是circ_kuiper。如前所述!
我很抱歉这个愚蠢的问题。当我使用Circ_Vmpdf计算案例KAPPA是大而且数据具有均值的均值,它返回大于1的值。例如:
circ_vmpdf(pi,pi,35)
ans =.
2.3516
我是否误解了什么?
我在基于kappa的两个函数的图中看到:
f1 = 1 /(2 *π* besseli(0,卡巴))
f2 = exp(κ)
在kappa值较高的情况下,第二次的增长速度远高于第一次,所以发生上述情况并不奇怪。
需要一个循环统计手段,得到我所需要的......谢谢!
你好,Christopher,谢谢你的反馈。我将在下一次上传时更新circ_plot。
circ_plot.m的另一个问题:
管线121中存在拼写错误,应阅读
s =变长度输入宗量{3};
(而不是vargin {1})
我在circ_plot中看到一个异常。我不明白,有没有人能解释或同意这是一个bug。
根据帮助历史可以绘制计数或规范化的箱子。
在circ_plot的第110行中,调用rose来计算容器
110] [t,r] = rose(alpha,x);
在第112行,标准化的箱子被绘制:
112] Polar(T,R / Sum(R),格式)
现在,由rose返回的向量t和r是这样的,它们可以用来直接绘制箱子,并具有布局[0 n1 n1 0 0 n2 n2 0 0…bin count的每个元素出现两次,并且sum(r)等于2.*length(alpha)。为了使r标准化,我们应该除以和(r)的一半,每个箱子的高度应该是原来的两倍。通过与hist进行比较进行检查,后者返回相同类型的信息,但只针对第一个和最后一个容器。
我提出以下替换线112和113
112]极性(t,2。* r。/ sum(r),格式)
Mr = max(2.*r /sum(r));
我发现circ_median非常慢。可能有一个更有效的算法来获得中值,但至少要注意在第42行左右m1和m2都是通过计算相同的circ_dist2(beta,beta)来确定的。circ_dist2需要很长时间。我将使用一个中间变量,只计算一次circ_dist2(几乎将函数运行时间的一半,对于2000个数据点,从2秒减少到1秒)。
好工作
优秀的工具箱!!!谢菲普!
我修复了circ_clust中的错误。
这个工具箱很棒!!我得到一个错误与circ_clust尽管。有问题吗?我还没能自己解决。这是我得到的错误消息。
???在分配A(I)= B,B中的元素的数量和
我也一定和你一样。
Error in ==> circ_clust at 53
μ(j) = circ_mean(α(cid = = j));
目前已在语义轻微(不幸的是无证)的变化从2009年以后的版本。
VMPDF计算密度,即它评估von mises分布在指定点的概率密度函数。早期版本在一个宽度为(alpha(2)-alpha(1))的小箱中计算近似概率,如果您想绘制直方图,就需要这样做。正如您将看到的,您可以很容易地恢复旧的行为
p = circ_vmpdf(点(1:end-1)。”,μ,卡巴);
P = P * diff(point (1:2));
得到近似的概率。
哦,对不起,我一定是把帖子弄乱了....
我会妥善重新发布我的疑问:
试运行
点= -pi:((4 * PI)/(2 * Nbin)):3 * PI;
μ= -2.838;
Kappa = 0.5125;
p = circ_vmpdf(点(1:end-1)。”,μ,卡巴);
在我看来,它从版本Cirstat2009(我认为正确)的结果与Cirtat2009D和CircStat2010B不同。也许我做错了什么。请告诉我。
非常感谢,
凯撒
还有2010b。
谢谢,
凯撒
在2010年的第一次上传中,我修复了12月报告的bug。
我还添加了主席k要求的功能。描述性统计的函数现在处理N维数组,计算可以以“matlab风格”执行。作为备份,新版本附带了一个“旧”文件夹,其中包含作为备份而替换的功能。如果您遇到问题或问题与新功能或希望看到额外的功能转换,让我知道。中间未使用的参数可以保留为空。
Circ_vmpdf似乎很适合我,可以生成具有正确时刻的数据。请说得更具体些。
根据1993年费雪公式(2.29)我认为,在环偏度下,最后一个方程的分母应该是(3/2)而不是(2/3)
新的circ_vmpdf....有问题不能复制之前发布的结果
函数不能优雅地处理n维数组以实现强大的matlab式计算;相反,输入被强制为列向量。也有许多错误。举个例子,在circ_moment.m中:
cbarα= (cos (p和*的* w)) / n;
(p* '*w)是一个标量点积,显然这不是余弦的加权和。
还有许多其他错误。请解决!
问题修复在11/5/09的上传。
遇到和石泉一样的问题
错误报告:
函数stats = circ_stats(alpha, w, d)
line50:统计数据。std_mardia = circ_std(α,w, d ' mardia ');
函数circ_std(alpha, w, d)不接受参数'mardia'。
这是伟大的工作!谢谢。
亲爱的弗罗林,
感谢您的错误报告。
关于1:修复了所有错误。我在Harrison&Kanji的示例上测试了输出。
关于2:这是不幸的。当前(更新)工具箱版本返回Angull偏差和循环标准偏差,作为第一和第二返回参数。
感谢您的反馈,
菲利普
干得好!到目前为止,它帮了我很大的忙。但是有一些
周围的错误!
1 . circ_hktest)功能
55线发现 - > QM =零(P,1);qr = qm;QN =时;
纠正?-> qm = 0 (p,1);qr = qm;qn = qm;
第94行found -> eff_2 = sum(qr.)^2 ./ sum(cn,2)) - tr.^2/n;
纠正?-> eff_2 = sum(qr。^2 ./ sum(cn,1)') - tr.^2/n;
第107行发现- >β= 1 / (1 - 1 / (5 * kk) 1 / (10 * (kk ^ 2)));
评论 - >测试过载测试版功能(测试版的帮助)
应该使用像betaf这样的其他名称
第144行找到 - > F1 = Beta * MS_1 / MS_R;
注释->如果inter设置为0/false beta没有定义!
2) circ_std函数
文件在报纸上
在CircStat中,角偏差计算为
>> s = circ_std(alpha);
和圆形标准偏差
> > s0 = circ_std(α,[][],' mardia ');
不适合纸和Matlab中央实现。
两种定义都围绕着…我将有选择地添加计算与下一次更新。
对不起,但我认为Circ_var返回s =(1-r)时应该s = 2 *(1-r)。
因为这个原因,circ_std和circ_var不会同意
这是一个很好的提交,填补了统计世界的明显差距。易于使用,完成得很好,作者提供了很大的反馈。
太棒了!
优秀的工具箱,帮助了我很多。不胜感激!
这是一个很棒的工具箱
PS:
我认为这是在circ_dist功能的错误
我认为这
r =角度(repmat(expmat(exp(1i * x(:)'),长度(y),1)...
我。/ repmat (exp (1 * y(:)), 1,长度(x)));
让我知道它是否正确
我希望我以前看到过。
很好地完成。
我认为背后 - 犯有困惑'r'和'r'
我相信我已经在你的功能之一发现了一个错误:
circ_rtest.m
第51行:z = R^2 / n;
应该是
第51行:Z = R ^ 2 * N;
包括偏度和峰度!
这正是我所需要的
谢谢。