Adding outlier to a matrix

Hi , I have a matrix of intensities (n*p). I want to add an outlier to it. Do you have any idea about how to simulate an outlier? I was thinking to take the mean of matrix and then multiply it to some very high value?
Do you have any idea ?

 Respuesta aceptada

Star Strider
Star Strider el 22 de Mayo de 2014

1 voto

I suggest:
M = rand(4,5); % Create data
Msts = [mean(M(:)) std(M(:))];
Outlier = Msts(1)+5*Msts(2);
Define the outlier by a multiple of the standard deviation from the mean. An value of 5*std is quite far out.

8 comentarios

Niki
Niki el 22 de Mayo de 2014
It does add a value. If I have a matrix of lets say 30 samples (number of sample* number of points) I want to add a row (an outlier sample) which has the dimension of 1%number of points
Star Strider
Star Strider el 22 de Mayo de 2014
This works:
OutRow = Msts(1)+rand(1,30).*5*Msts(2);
I chose 5*std, increase the ‘5’ to get values even further out.
Niki
Niki el 22 de Mayo de 2014
Editada: Niki el 22 de Mayo de 2014
This generates a random noise. I am not interested in noise Please find attached a example data If you plot it, you can see how they look like >>plot(X')
Star Strider
Star Strider el 22 de Mayo de 2014
I thought you wanted a random vector of outliers.
This will give you a row of constants:
OutRow = Msts(1)+ones(1,30).*5*Msts(2);
Here’s a version using your ‘X’ array from your ‘example.m’ file:
load('example.mat')
OutsX = mean(X(:)) + ones(1,size(X,2)).*5*std(X(:));
figure(1)
mesh([X; OutsX])
Niki
Niki el 22 de Mayo de 2014
Thanks BUT it is not what I am looking for. creating a constant vector is not very hard.
I definitely want a random vector not a constant as your latter post. I want to have more or less the same shape as the example I gave you and generated based on that data. If we have a constant value in a data set, it is very easy to detect it and discard it. It should be an outlier which you cannot detect it easily by naked eye :-)
Star Strider
Star Strider el 22 de Mayo de 2014
See if this does what you want:
load('example.mat')
OutsXR = mean(X,2) + 5*std(X,[],2);
figure(1)
plot([X OutsXR])
Niki
Niki el 22 de Mayo de 2014
Not that one but this one helps
OutsXR = mean(X,1) + 5*std(X,[],1);
however, I accept your answer Thanks
Star Strider
Star Strider el 22 de Mayo de 2014
My pleasure, and thanks!

Iniciar sesión para comentar.

Más respuestas (1)

Roger Wohlwend
Roger Wohlwend el 22 de Mayo de 2014

0 votos

Actually you answered your question yourself. Instead of the mean I would use the maximum value of the matrix. Multiply that number by a certain value. That's all. It is quite easy.

1 comentario

Niki
Niki el 22 de Mayo de 2014
In fact, I want to know whether it is scientifically correct or not? It is not a number. As I explained it is a matrix of n*p so I wont have a value as outlier but a row which corresponds as an outlier
On the other hand, do you know any way to show it as a outlier ?

Iniciar sesión para comentar.

Etiquetas

Preguntada:

el 22 de Mayo de 2014

Comentada:

el 22 de Mayo de 2014

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by