R'de aykırı değerler nasıl kaldırılır


Aykırı değer , bir veri kümesindeki diğer değerlerden anormal derecede uzak olan bir gözlemdir. Aykırı değerler sorunlu olabilir çünkü analizin sonuçlarını etkileyebilirler.

Bu eğitimde R’de aykırı değerlerin nasıl tanımlanacağı ve kaldırılacağı açıklanmaktadır.

R’de aykırı değerler nasıl belirlenir

Aykırı değerleri kaldırabilmeniz için öncelikle neyi aykırı değer olarak değerlendireceğinize karar vermelisiniz. Bunu yapmanın iki yaygın yolu vardır:

1. Çeyrekler arası aralığı kullanın.

Çeyrekler arası aralık (IQR), bir veri setindeki 75. yüzdelik dilim (Q3) ile 25. yüzdelik dilim (Q1) arasındaki farktır. Değerlerin ortalama %50’sinin dağılımını ölçer.

Bir gözlemi, üçüncü çeyreğin (Q3) çeyrekler arası aralığın 1,5 katı üzerinde veya birinci çeyreğin (Q1) altında çeyrekler arası aralığın 1,5 katı olması durumunda aykırı değer olarak tanımlayabilirsiniz.

Aykırı Değerler = Gözlemler > Ç3 + 1,5*IQR veya < Ç1 – 1,5*IQR

2. Z-puanlarını kullanın.

Z-puanı, belirli bir değerin ortalamadan kaç standart sapma olduğunu gösterir. Z-puanını hesaplamak için aşağıdaki formülü kullanırız:

z = (X – μ) / σ

Altın:

  • X tek bir ham veri değeridir
  • μ nüfus ortalamasıdır
  • σ popülasyon standart sapmasıdır

Bir gözlemin z-puanı -3’ten küçük veya 3’ten büyükse aykırı değer olarak tanımlayabilirsiniz.

Aykırı Değerler = Z-puanları > 3 veya < -3 olan gözlemler

R’de aykırı değerler nasıl kaldırılır

Neyin aykırı değer olduğunu düşündüğünüze karar verdikten sonra bunları tanımlayıp veri kümesinden kaldırabilirsiniz. Bunun nasıl yapılacağını göstermek için aşağıdaki veri çerçevesini kullanacağız:

 #make this example reproducible 
set.seed(0)

#create data frame with three columns A', 'B', 'C' 
df <- data.frame(A=rnorm(1000, mean=10, sd=3),
                 B=rnorm(1000, mean=20, sd=3),
                 C=rnorm(1000, mean=30, sd=3))

#view first six rows of data frame
head(df)
         ABC
1 13.78886 19.13945 31.33304
2 9.02130 25.52332 30.03579
3 13.98940 19.52971 29.97216
4 13.81729 15.83059 29.09287
5 11.24392 15.58069 31.47707
6 5.38015 19.79144 28.19184

Daha sonra z-puanı yöntemini veya çeyrekler arası aralık yöntemini kullanarak aykırı değerleri tanımlayabilir ve kaldırabiliriz:

Z-puanı yöntemi:

Aşağıdaki kod, veri çerçevesinin her sütunundaki her değerin z puanının nasıl hesaplanacağını ve ardından mutlak değeri 3’ten büyük olan en az bir z puanına sahip satırların nasıl kaldırılacağını gösterir:

 #find absolute value of z-score for each value in each column
z_scores <- as.data.frame (sapply(df, function(df) (abs(df-mean(df))/sd(df))))

#view first six rows of z_scores data frame
head(z_scores)

          ABC
1 1.2813403 0.25350805 0.39419878
2 0.3110243 1.80496734 0.05890232
3 1.3483190 0.12766847 0.08112630
4 1.2908343 1.32044506 0.38824414
5 0.4313316 1.40102642 0.44450451
6 1.5271674 0.04327186 0.70295309

#only keep rows in dataframe with all z-scores less than absolute value of 3 
no_outliers <- z_scores[!rowSums(z_scores>3), ]

#view row and column count of new data frame
dim(no_outliers)

[1] 994 3

Orijinal veri çerçevesinde 1000 satır ve 3 sütun vardı. Yeni veri çerçevesinde 994 satır ve 3 sütun var; bu bize, sütunlarından birinde mutlak değeri 3’ten büyük olan en az bir z puanına sahip oldukları için 6 satırın kaldırıldığını gösteriyor.

Çeyrekler arası aralık yöntemi:

Bazı durumlarda, yalnızca bir veri çerçevesinin sütunundaki aykırı değerleri belirlemek isteyebiliriz. Örneğin, veri çerçevemizin yalnızca “A” sütununda aykırı değer içeren satırları kaldırmak istediğimizi varsayalım.

Aşağıdaki kod, “A” sütunundaki değeri üçüncü çeyreğin (Q3) üzerindeki çeyrekler arası aralığın 1,5 katı veya ilk çeyreğin (Q1) altındaki çeyrekler arası aralığın 1,5 katı olan satırların veri çerçevesinden nasıl kaldırılacağını gösterir. .

 #find Q1, Q3, and interquartile range for values in column A
Q1 <- quantile(df$A, .25)
Q3 <- quantile(df$A, .75)
IQR <- IQR(df$A)

#only keep rows in dataframe that have values within 1.5*IQR of Q1 and Q3
no_outliers <- subset(df, df$A> (Q1 - 1.5*IQR) & df$A< (Q3 + 1.5*IQR))

#view row and column count of new data frame
dim(no_outliers) 

[1] 994 3

Orijinal veri çerçevesinde 1000 satır ve 3 sütun vardı. Yeni veri çerçevesinde 994 satır ve 3 sütun var, bu da bize 6 satırın A sütununda en az bir aykırı değer içerdiğinden kaldırıldığını gösteriyor.

Aykırı değerler ne zaman kaldırılır

Bir veya daha fazla aykırı değer mevcutsa, öncelikle bunların bir veri girişi hatasının sonucu olmadığını doğrulamanız gerekir. Bazen bir kişi verileri kaydederken yanlış veri değerini girer.

Aykırı değerin bir veri girişi hatasının sonucu olduğu ortaya çıkarsa, ona veri kümesinin ortalaması veya medyanı gibi yeni bir değer atamaya karar verebilirsiniz.

Değer gerçekten aykırı bir değerse ve genel analiziniz üzerinde önemli bir etkisi olacaksa onu kaldırmayı seçebilirsiniz. Son raporunuzda veya analizinizde aykırı bir değeri kaldırdığınızı mutlaka belirtin.

Ek kaynaklar

Bu derste, bir vektör uzunluğu n , bir popülasyon ortalaması μ ve bir popülasyon standart sapması σ verilen normal dağılımlı rastgele değişkenlerin vektörlerini oluşturmak için rnorm()’u kullandık. Bu özellik hakkında daha fazla bilgiyi buradan edinebilirsiniz.

Ayrıca z-puanlarını hesaplayan bir veri çerçevesindeki her sütuna bir fonksiyon uygulamak için sapply() yöntemini kullandık. Bu özellik hakkında daha fazla bilgiyi buradan edinebilirsiniz.

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir