Matlab初学者中位数,模式和分级

时间:2014-08-05 03:13:25

标签: matlab math

我是MATLAB的初学者,我正在努力完成这项任务。任何人都可以指导我完成它吗?

考虑下面给出的数据:

x = [ 1 , 48 , 81 , 2 , 10 , 25 , ,14 , 18 , 53 , 41, 56, 89,0, 1000, , ...
      34, 47, 455, 21, , 22, 100 ];

加载数据后,看看是否可以找到:

  1. 异常值或
  2. 数据文件中缺少数据
  3. 使用中值,模式和噪声数据,使用中值分级,平均分级和bin边界来纠正缺失值。

1 个答案:

答案 0 :(得分:2)

这不是那么糟糕。首先,看看您的数据分布。您可以看到大多数数据都有两位数。异常值是具有单个数字的异常值,或者是大于两位数的异常值。请注意,这完全是主观的,所以其他人可能会告诉您单个数字也是数据的一部分。此外,缺失的数据是逗号之间的空格数。让我们编写一些MATLAB代码并将它们更改为NaN(或非数字),因为如果您尝试将此代码直接复制并粘贴到MATLAB中,它会给您一个语法错误,因为如果您明确定义数字这样,你必须确保所有这些都在那里。

要执行此操作,请使用regexprep,以便此字符串中包含逗号,空格和另一个逗号的任何部分在其间放置NaN。为此,我们需要首先将此语句作为字符串。然后我们使用eval将此字符串转换为实际的MATLAB语句:

x = '[ 1 , 48 , 81 , 2 , 10 , 25 , ,14 , 18 , 53 , 41, 56, 89,0, 1000, , 34, 47, 455, 21, , 22, 100 ];'
y = eval(regexprep(x, ', ,', ', NaN, '));

如果我们显示这些数据,我们会得到:

y =

Columns 1 through 6

       1          48          81           2          10          25

Columns 7 through 12

     NaN          14          18          53          41          56

Columns 13 through 18

      89           0        1000         NaN          34          47

Columns 19 through 23

     455          21         NaN          22         100

因此,要回答我们的第一个问题,任何缺失的值都表示为NaN,那些大于两位数的数字都是异常值。


对于下一个问题,我们只需提取缺失的值,计算未丢失的值的均值和中位数,并用均值填写NaN个值。中位数。对于bin边界,这与使用左边的值(或右边...取决于你的定义,但让我们使用左边)的缺失值相同,并填入其中。如下:

yMissing = isnan(y); %// Which values are missing?
y_noNaN = y(~yMissing); %// Extract the non-missing values
meanY = mean(y_noNaN); %// Get the mean
medianY = median(y_noNaN); %// Get the median

%// Output - Fill in missing values with median
yMedian = y;
yMedian(yMissing) = medianY;
%// Same for mean
yMean = y;
yMean(yMissing) = meanY;
%// Bin boundaries
yBinBound = y;
yBinBound(yMissing) = y(find(yMissing)-1);

非缺失值数据的均值和中位数为:

meanY =

105.8500

medianY =

37.5000

除了具有缺失值的原始数据之外,每个输出的输出如下:

format bank; %// Do this to show just the first two decimal places for compact output
format compact;

y =
Columns 1 through 5
         1          48          81           2          10
Columns 6 through 10
        25         NaN          14          18          53
Columns 11 through 15
        41          56          89           0        1000
Columns 16 through 20
       NaN          34          47         455          21
Columns 21 through 23
       NaN          22         100

yMean =
Columns 1 through 5
        1.00         48.00         81.00          2.00         10.00
Columns 6 through 10
       25.00        105.85         14.00         18.00         53.00
Columns 11 through 15
       41.00         56.00         89.00             0       1000.00
Columns 16 through 20
      105.85         34.00         47.00        455.00         21.00
Columns 21 through 23
      105.85         22.00        100.00

yMedian =
Columns 1 through 5
        1.00         48.00         81.00          2.00         10.00
Columns 6 through 10
       25.00         37.50         14.00         18.00         53.00
Columns 11 through 15
       41.00         56.00         89.00             0       1000.00
Columns 16 through 20
       37.50         34.00         47.00        455.00         21.00
Columns 21 through 23
       37.50         22.00        100.00

yBinBound =
Columns 1 through 5
        1.00         48.00         81.00          2.00         10.00
Columns 6 through 10
       25.00         25.00         14.00         18.00         53.00
Columns 11 through 15
       41.00         56.00         89.00             0       1000.00
Columns 16 through 20
     1000.00         34.00         47.00        455.00         21.00
Columns 21 through 23
       21.00         22.00        100.00

如果您查看每个输出值,则会根据问题用平均值,中位数以及bin边界填充数据。