Как проверить выброс для каждой переменной и изменить?

Я хочу проверить значение выброса каждой переменной в R и изменить значение выброса переменной на определенное значение.

Многие люди написали в stackoverflow, чтобы порекомендовать функцию outlierTest в пакете car.

Однако функция outlierTest извлекает результат конкретной строки, а не переменной.

Я хочу, чтобы переменная имела выброс и изменила это значение на определенное значение. Какие функции и код следует использовать?

+Вот мой код данных. Это с открытым исходным кодом. Таким образом, вы можете загрузить эти данные в виде следующего кода.

credit<-read.csv("http://freakonometrics.free.fr/german_credit.csv", header=TRUE)
F=c(1,2,4,5,7,8,9,10,11,12,13,15,16,17,18,19,20,21)
for(i in F) credit[,i]=as.factor(credit[,i])

person 이순우    schedule 14.07.2017    source источник
comment
Сделайте минимальный воспроизводимый пример. Может быть, есть встроенный набор данных, который вы можете использовать для примера?   -  person Gregor Thomas    schedule 14.07.2017
comment
@Грегор Я добавил свой код данных. пожалуйста, проверь это!   -  person 이순우    schedule 14.07.2017
comment
@이순우 Помогите закрыть приведенный ниже ответ в качестве рекомендуемого - если он решит вашу проблему   -  person Prasanna Nandakumar    schedule 19.07.2017


Ответы (2)


У вас есть несколько вариантов обнаружения и изменения выбросов. Пожалуйста, проверьте этот действительно полезный пост:

https://www.r-bloggers.com/outlier-detection-and-treatment-with-r/

person Koot6133    schedule 14.07.2017

Нахождение выброса и замена его значением 99-го процентиля

Data_Outlier <- read.csv(file.choose()) # Your dataset
percentile.table = data.frame(NULL)

for(i in 2:ncol(Data_Outlier))
 {      
     if (is.numeric(Data_Outlier[,i]))
     {
         percentile_value <- quantile(Data_Outlier[,i],c(0.99),na.rm=TRUE)
         Variable = names(Data_Outlier)[i]
         Percentile.99 = percentile_value
         table = cbind(Variable, Percentile.99)
         percentile.table = rbind(percentile.table,table)
     }
 }
print(percentile.table,row.names=FALSE)

for(i in 2:ncol(Data_Outlier))
 {
     Percentile.99 = quantile(Data_Outlier[,i],c(0.99),na.rm=TRUE)
     Data_Outlier[,i][Data_Outlier[,i]>Percentile.99] = Percentile.99
 }
person Prasanna Nandakumar    schedule 14.07.2017