简单的数据处理
问题描述:
比方说,我得到了这组数据。排序后,可以像下面那样绘制分布。简单的数据处理
M=[-99 -99 -44.5 -7.375 -5.5 -1.666666667 -1.333333333 -1.285714286 0.436363636 2.35 3.3 4.285714286 5.052631579 6.2 7.076923077 7.230769231 7.916666667 9.7 10.66666667 16.16666667 17.4 19.2 19.6 20.75 24.25 34.5 49.5]
我的问题是我怎么找到那些中间范围中值并记录索引。使用正态分布还是其他的东西?感谢你的帮助!
图片为乔纳斯
答
假设您的中段取值范围为[-10 10],则指数将是:
> find(-10< M & M< 10)
ans =
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
请注意,您可以通过逻辑编制索引还存取权限的值,比如:
> M(-10< M & M< 10)
ans =
Columns 1 through 15:
-7.37500 -5.50000 -1.66667 -1.33333 and so on ...
而且让你的中档,只是:
> q= quantile(M(:), [.25 .75])
q =
-1.3214
17.0917
> find(q(1)< M & M< q(2))
ans =
8 9 10 11 12 13 14 15 16 17 18 19 20
此外还请注意M(:)
用于确保quantile
将M
作为向量。你可以采用约定,你的程序中的所有向量都是列向量,然后大部分函数会自动正确处理它们。
更新:现在
,对于位数的一个非常短的描述是:它们是从一个随机变量的累积分布函数(cdf
)取点。 (现在你的M
被认为是一种cdf
,因为它的非降低,可以归一化为1)。现在'简单'是一个分位数.5的数据意味着50%的数值低于这个分位数'。关于分位数的更多细节可以在例如here中找到。
+0
你好吃。感谢您的回答。但是你能否在分位数函数中详细解释一下[.25.75]?非常感谢! – view 2011-02-05 18:46:16
答
如果你不知道先验你的中间范围是什么,但你知道你想放弃曲线开始和结束时的异常值,如果你有统计工具箱,可以使用ROBUSTFIT对您的数据进行强健的线性回归,只保留内点。
M=[-99 -99 -44.5 -7.375 -5.5 -1.666666667 -1.333333333 -1.285714286 0.436363636 2.35 3.3 4.285714286 5.052631579 6.2 7.076923077 7.230769231 7.916666667 9.7 10.66666667 16.16666667 17.4 19.2 19.6 20.75 24.25 34.5 49.5];
%# robust linear regression
x = find(isfinite(M)); %# eliminate NaN or Inf
[u,s]=robustfit(x,M(x));
%# inliers have a weight > 0.25 (raise this value to be stricter)
inlierIdx = s.w > 0.25;
middleRangeX = x(inlierIdx)
middleRangeValues = M(x(inlierIdx))
%# plot with the regression in red and the good values in green
plot(x,M(x),'-b.',x,u(1)+u(2)*x,'r')
hold on,plot(middleRangeX,middleRangeValues,'*r')
middleRangeX =
Columns 1 through 21
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
Column 22
25
middleRangeValues =
Columns 1 through 10
-7.375 -5.5 -1.6667 -1.3333 -1.2857 0.43636 2.35 3.3 4.2857 5.0526
Columns 11 through 20
6.2 7.0769 7.2308 7.9167 9.7 10.667 16.167 17.4 19.2 19.6
Columns 21 through 22
20.75 24.25
你的选择是什么 “中间” 的范围肯定是相当主观的。 – 2011-02-05 13:55:39
而不是说'中间'范围,我认为可能会说'一个有限的方差值序列'更好。实际上,范围应该随着不同的数据集而改变。 – view 2011-02-05 15:40:30