简单的数据处理

问题描述:

比方说,我得到了这组数据。排序后,可以像下面那样绘制分布。简单的数据处理

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] 

plot for the data

我的问题是我怎么找到那些中间范围中值并记录索引。使用正态分布还是其他的东西?感谢你的帮助!

图片为乔纳斯enter image description here

+1

你的选择是什么 “中间” 的范围肯定是相当主观的。 – 2011-02-05 13:55:39

+0

而不是说'中间'范围,我认为可能会说'一个有限的方差值序列'更好。实际上,范围应该随着不同的数据集而改变。 – view 2011-02-05 15:40:30

假设您的中段取值范围为[-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(:)用于确保quantileM作为向量。你可以采用约定,你的程序中的所有向量都是列向量,然后大部分函数会自动正确处理它们。

更新:现在
,对于位数的一个非常短的描述是:它们是从一个随机变量的累积分布函数(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') 

the plot

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