简单的数据处理

vie*_*iew 4 matlab function distribution matrix

假设我得到了这组数据.排序后,可以如下绘制分布.

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]
Run Code Online (Sandbox Code Playgroud)

绘制数据

我的问题是如何找出中间范围内的那些值并记录指数.使用正态分布还是其他什么?感谢您的帮助!

Jonas'的图片 在此输入图像描述

eat*_*eat 6

假设你的中间范围是[-10 10]那么指数将是:

> find(-10< M & M< 10)
ans =

    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18
Run Code Online (Sandbox Code Playgroud)

请注意,您还可以通过逻辑索引来访问值,例如:

> M(-10< M & M< 10)
ans =

 Columns 1 through 15:

  -7.37500  -5.50000  -1.66667  -1.33333  and so on ...
Run Code Online (Sandbox Code Playgroud)

为了获得你的中档,只需:

> 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
Run Code Online (Sandbox Code Playgroud)

另请注意,M(:)此处用于确保将quantile对待M视为向量.您可以采用程序中的所有向量都是列向量的约定,然后大多数函数会自动正确地处理它们.

更新:
现在,对于分位数的非常简短的描述是:它们是从cdf随机变量的累积分布函数()中获取的点.(现在你M的假设是一种cdf,因为它不减少,可归一化为1).现在'简单''数据的分位数.5'意味着50%的值低于此分位数'.关于分位数的更多细节可以在这里找到.