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 ?

 채택된 답변

Star Strider
Star Strider 2014년 5월 22일

1 개 추천

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

Niki
Niki 2014년 5월 22일
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
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 2014년 5월 22일
편집: Niki 2014년 5월 22일
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')
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 2014년 5월 22일
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 :-)
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 2014년 5월 22일
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 2014년 5월 22일
My pleasure, and thanks!

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Roger Wohlwend
Roger Wohlwend 2014년 5월 22일

0 개 추천

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

Niki
Niki 2014년 5월 22일
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 ?

댓글을 달려면 로그인하십시오.

태그

질문:

2014년 5월 22일

댓글:

2014년 5월 22일

Community Treasure Hunt

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

Start Hunting!

Translated by