Логистическая регрессия в R |
Здравствуйте, гость ( Вход | Регистрация )
Логистическая регрессия в R |
28.06.2017 - 01:29
Сообщение
#1
|
|
Группа: Пользователи Сообщений: 76 Регистрация: 27.04.2014 Пользователь №: 26375 |
Подскажите, пожалуйста, кто чем может)). Я делаю логистическую регрессию. Все предикторы биноминальные (0,1). Y-зависимая переменная(бинарная 0 - нет события(это хорошо), 1-есть событие(это плохо)). Дело в том, что нули к нулям, он мало мальски правильно соотносит, но 50% единиц(плохих) у него попадают к нулям(хорошим).Т.е. неверное определение. Как понять, почему так происходит и что сделать, чтобы улучшить классификацию, хотя бы до 85% точности?
Доп. инфо, я гуглила, и нашла метод Feature Selection и его реализацию в R Boruta. Выделила 6 предикторов, думала счастье рядом, сейчас построила модель, но не тут-то было, классификация такая же некачественная:(( Может что-то не то сделала?(( Что делать? (с)(Чернышевский Н.Г.)
Прикрепленные файлы
|
|
28.06.2017 - 08:07
Сообщение
#2
|
|
Группа: Пользователи Сообщений: 1091 Регистрация: 26.08.2010 Пользователь №: 22699 |
Подскажите, пожалуйста, кто чем может)). Я делаю логистическую регрессию. Все предикторы биноминальные (0,1). Y-зависимая переменная(бинарная 0 - нет события(это хорошо), 1-есть событие(это плохо)). Дело в том, что нули к нулям, он мало мальски правильно соотносит, но 50% единиц(плохих) у него попадают к нулям(хорошим).Т.е. неверное определение. Как понять, почему так происходит и что сделать, чтобы улучшить классификацию, хотя бы до 85% точности? Доп. инфо, я гуглила, и нашла метод Feature Selection и его реализацию в R Boruta. Выделила 6 предикторов , думала счастье рядом ,сейчас построила модель, но не тут-то было, классификация такая же некачественная:(( Может что-то не то сделала?(( Что делать? (с)(Чернышевский Н.Г.) 1. Откуда "дровишки"? В смысле "датасет"? 2. Код df <- read.csv2("data.csv") df <- data.frame(lapply(df, factor)) > randomForest(Y~., df) Call: randomForest(formula = Y ~ ., data = df) Type of random forest: classification Number of trees: 500 No. of variables tried at each split: 4 OOB estimate of error rate: 38.47% Confusion matrix: 0 1 class.error 0 1305 232 0.1509434 1 602 29 0.9540412 Выборка несбалансирована. Если такое соотношение исходов в генсовокупности, то и пусть так будет. Но если это просто "так сложилось", необходимо получить модель для 1:1 и потом сделать трешоилд оптимальный для генсовокупности в которой модель будет применяться. Код > randomForest(Y~.,df, sampsize=c("0"=500, "1"=500)) Call: randomForest(formula = Y ~ ., data = df, sampsize = c(`0` = 500, `1` = 500)) Type of random forest: classification Number of trees: 500 No. of variables tried at each split: 4 OOB estimate of error rate: 31.83% Confusion matrix: 0 1 class.error 0 907 630 0.40988939 1 60 571 0.09508716 Если балансируем выборку, то видим "забавный" результат. Один из "исходов" зависимой переменной просто практически случаен. Ну а Boruta честно улучшает различение неслучайного исхода зависимой переменной. На ~5 случаев. Код > randomForest(getConfirmedFormula(res.boruta),df, sampsize=c("0"=500, "1"=500))
Call: randomForest(formula = getConfirmedFormula(res.boruta), data = df, sampsize = c(`0` = 500, `1` = 500)) Type of random forest: classification Number of trees: 500 No. of variables tried at each split: 3 OOB estimate of error rate: 31.78% Confusion matrix: 0 1 class.error 0 904 633 0.41184125 1 56 575 0.08874802 Сообщение отредактировал p2004r - 28.06.2017 - 08:08 |
|
28.06.2017 - 08:34
Сообщение
#3
|
|
Группа: Пользователи Сообщений: 105 Регистрация: 23.11.2016 Пользователь №: 28953 |
Подскажите, пожалуйста, кто чем может)). Настя, ! Сделал несколько вариантов анализа Вашего массива. Вот лучшее уравнение: Analysis of Maximum Likelihood Estimates Standard Wald Standardized Parameter DF Estimate Error Chi-Square Pr > ChiSq Estimate Label Intercept 1 -0.1140 0.0764 2.2259 0.1357 Intercept: Y=0 X1 1 0.5680 0.1106 26.3749 <.0001 0.2467 X1 X3 1 1.3719 0.2735 25.1699 <.0001 0.3327 X3 X5 1 2.9687 1.0229 8.4227 0.0037 0.4436 X5 X8 1 1.0929 0.4541 5.7929 0.0161 0.2349 X8 X9 1 0.8818 0.3970 4.9331 0.0263 0.1993 X9 X11 1 0.4458 0.1158 14.8159 0.0001 0.1177 X11 X14 1 0.6613 0.2686 6.0622 0.0138 0.1365 X14 X16 1 0.2207 0.1289 2.9316 0.0869 0.0606 X16 Odds Ratio Estimates Point 95% Wald Effect Estimate Confidence Limits X1 1.765 1.421 2.192 X3 3.943 2.307 6.739 X5 19.467 2.622 144.544 X8 2.983 1.225 7.263 X9 2.415 1.109 5.259 X11 1.562 1.245 1.960 X14 1.937 1.144 3.280 X16 1.247 0.969 1.605 Association of Predicted Probabilities and Observed Responses Percent Concordant 71.8 Somers' D 0.554 Percent Discordant 16.4 Gamma 0.628 Percent Tied 11.8 Tau-a 0.229 Pairs 969847 c 0.777 Прикрепляю 2 графика с ROC-кривыми, а также таблицу сопряжённости фактических и предсказанных значений Y. Могу выслать Вам 4 больших файла (объём 8,8 Мб) с более подробными результатами. Сообщите, на какой адрес отправить эти файлы. Анализ этих результатов говорит о том, что что нужно разобраться с содержанием самого массива. И отобрать новый массив. Тогда и будут получены лучшие результаты. Сообщение отредактировал leo_biostat - 28.06.2017 - 08:40 |
|
28.06.2017 - 18:32
Сообщение
#4
|
|
Группа: Модераторы Сообщений: 286 Регистрация: 1.02.2005 Из: Воронеж Пользователь №: 93 |
Сделал несколько вариантов анализа Вашего массива. Спасибо. Прекрасный пример помощи. О.Я.Кравец, д.т.н., проф.
|
|
28.06.2017 - 18:40
Сообщение
#5
|
|
Группа: Пользователи Сообщений: 1091 Регистрация: 26.08.2010 Пользователь №: 22699 |
Подскажите, пожалуйста, кто чем может)). Я делаю логистическую регрессию. Все предикторы биноминальные (0,1). Y-зависимая переменная(бинарная 0 - нет события(это хорошо), 1-есть событие(это плохо)). Дело в том, что нули к нулям, он мало мальски правильно соотносит, но 50% единиц(плохих) у него попадают к нулям(хорошим).Т.е. неверное определение. Как понять, почему так происходит и что сделать, чтобы улучшить классификацию, хотя бы до 85% точности? Доп. инфо, я гуглила, и нашла метод Feature Selection и его реализацию в R Boruta. Выделила 6 предикторов , думала счастье рядом ,сейчас построила модель, но не тут-то было, классификация такая же некачественная:(( Может что-то не то сделала?(( Что делать? (с)(Чернышевский Н.Г.) ROC выглядит вот так как на атаче. Существуют только решения которые снабжены доверительным интервалом. Это видно из гистограмм распределения вероятности отнесения к конкретному классу. Ну и "пространство в котором проведены границы решения". Видно, что случаи которые действительно можно отделить "обкусывает края", можно сказать "за счет рандом эффекта". PS Можно только по результатам применения модели сказать что "если модель сказала 0, то весьма вероятно что действительно 0. А если модель сказала 1, то подбрось монетку и выбери случайный исход между 0 и 1". (!все это в случае одинаковой частоты исходов в генсовокупности! для конкретной частоты исходов в генсовокупности решения полезного вообще может не быть !) PPS Судя по всему никакого "более лучшего решения" тут не существует по принципиальным ограничениям. Сообщение отредактировал p2004r - 28.06.2017 - 19:09 |
|
28.06.2017 - 19:46
Сообщение
#6
|
|
Группа: Пользователи Сообщений: 1091 Регистрация: 26.08.2010 Пользователь №: 22699 |
Подскажите, пожалуйста, кто чем может)). Я делаю логистическую регрессию. Все предикторы биноминальные (0,1). Y-зависимая переменная(бинарная 0 - нет события(это хорошо), 1-есть событие(это плохо)). Дело в том, что нули к нулям, он мало мальски правильно соотносит, но 50% единиц(плохих) у него попадают к нулям(хорошим).Т.е. неверное определение. Как понять, почему так происходит и что сделать, чтобы улучшить классификацию, хотя бы до 85% точности? Доп. инфо, я гуглила, и нашла метод Feature Selection и его реализацию в R Boruta. Выделила 6 предикторов , думала счастье рядом ,сейчас построила модель, но не тут-то было, классификация такая же некачественная:(( Может что-то не то сделала?(( Что делать? (с)(Чернышевский Н.Г.) И все таки "про датасет" надо бы рассказать, а то вот такое очень странно выглядит Код > table(df$x1, df$x11, df$Y )
, , = 0 0 1 0 355 684 1 22 223 2 8 182 3 0 63 , , = 1 0 1 0 355 203 1 22 28 2 8 12 3 0 3 |
|
28.06.2017 - 20:39
Сообщение
#7
|
|
Группа: Пользователи Сообщений: 76 Регистрация: 27.04.2014 Пользователь №: 26375 |
p2004r, суперски
leo_biostat, а можете как и p2004r тоже дать исходный код, хочу сама получить такие ре-ты:)) p2004r, что касается дровишек ,я не могу говорить, поэтому и закодировала в иксы и игрике, но это фин скоринг . |
|
28.06.2017 - 21:23
Сообщение
#8
|
|
Группа: Пользователи Сообщений: 76 Регистрация: 27.04.2014 Пользователь №: 26375 |
Что касается данных, то такие переменные как:
x3 x4 x5 x6 x8 x10 x11 x13 x14 x15 x16 x17 изначально метрические, я просто в отчаянии, когда ничего не получалось, их перевела в дихотомическую шкалу, принцип перевода был простой, если есть значение, то 1, нет , то 0. оригинальный датасет вот на мой взгляд ключевая переменная x13 (количество шарашек оформленный на одно ФИО) x11 сколько было судебных дел х15 количество дочерних фирм х8 сколько нарушений выявила налоговая полиция остальные не важно:) Если выше указанные переменные оставить метрическими, это может повлиять на ре-тат лог.регрессии?, у меня когда они были метрические, процент ошибок отнесения единиц (это событие обмана) к нулям был адский.,
Прикрепленные файлы
|
|
28.06.2017 - 22:38
Сообщение
#9
|
|
Группа: Пользователи Сообщений: 1202 Регистрация: 13.01.2008 Из: Челябинск Пользователь №: 4704 |
Что касается данных, то такие переменные как: x3 x4 x5 x6 x8 x10 x11 x13 x14 x15 x16 x17 изначально метрические, я просто в отчаянии, когда ничего не получалось, их перевела в дихотомическую шкалу, принцип перевода был простой, если есть значение, то 1, нет , то 0. оригинальный датасет вот на мой взгляд ключевая переменная x13 (количество шарашек оформленный на одно ФИО) x11 сколько было судебных дел х15 количество дочерних фирм х8 сколько нарушений выявила налоговая полиция остальные не важно:) Если выше указанные переменные оставить метрическими, это может повлиять на ре-тат лог.регрессии?, у меня когда они были метрические, процент ошибок отнесения единиц (это событие обмана) к нулям был адский., Хотел высказаться по первому набору, но прочитав этот пост засомневался. Смотрите, что получается. Чисто из жизненного опыта, расшифрованные вами 4 показателя должны быть показателями риска, т.е. их наличие должно увеличивать риск Y=1 (обман). В вашем же первом наборе они являются протекторными показателями, т.е. их наличие, напротив, снижает риск 1. Вы не напутали с кодировками? "на мой взгляд ключевая переменная x13", "остальные не важно:)" Не верю! (с) (Станиславский К.С.) Нужно считать относительные риски: найти % события в группе Y=0 и % события в Y=1, а затем правильно разделить одно на другое. |
|
28.06.2017 - 23:14
Сообщение
#10
|
|
Группа: Пользователи Сообщений: 1091 Регистрация: 26.08.2010 Пользователь №: 22699 |
p2004r, суперски leo_biostat, а можете как и p2004r тоже дать исходный код, хочу сама получить такие ре-ты:)) p2004r, что касается дровишек ,я не могу говорить, поэтому и закодировала в иксы и игрике, но это фин скоринг . Там очень уж совпадает часть случаев, надо проверить не смешались ли каким то образом данные в процессе их подготовки. Не может быть таких совпадений по численности вариантов ответов. Код > nrow(unique(df[,-1]))
[1] 414 > nrow(df[,-1]) [1] 2168 > table(do.call(paste0,as.list(df[,-1])), df$Y) 0 1 0000000000000000 36 36 0000000000000011 2 2 0000000000000100 1 1 0000000000000111 1 1 0000000000001000 18 18 0000000000001011 3 3 0000000000001111 1 1 0000000000010000 146 146 0000000000010010 2 2 0000000000010011 29 29 0000000000010100 1 1 0000000000010110 2 2 0000000000011000 88 88 0000000000011011 23 23 0000000000011100 1 1 0000000000100000 17 15 0000000000100011 8 3 0000000000100100 1 0 0000000000100111 2 0 0000000000101000 11 10 0000000000101010 1 1 0000000000101011 5 0 0000000000101111 3 0 0000000000110000 75 72 0000000000110010 2 2 0000000000110011 36 28 0000000000110100 4 2 0000000000110111 3 1 0000000000111000 44 39 0000000000111001 1 1 0000000000111010 4 3 0000000000111011 16 11 0000000000111100 2 1 0000000000111111 8 2 0000000010111011 2 2 0000000101100111 1 0 0000000101101011 1 0 0000000101110000 1 0 0000000101110111 1 0 0000000101111000 1 0 0000000101111100 1 0 0000000111100011 1 0 0000000111100111 2 0 0000000111101000 1 0 0000000111101011 1 0 0000000111101100 1 0 0000000111110011 1 0 0000000111110111 2 0 0000000111111011 3 0 0000000111111111 3 0 0000110000100000 3 0 0000110000100100 7 0 0000110000101100 4 0 0000110000110000 1 0 0000110000110100 4 0 0000110000111000 1 0 0000110000111100 2 0 0000110010100000 1 0 0000110010101000 2 0 0000110010110000 1 0 0000110010110100 2 0 0000110010111000 3 0 0000110101110100 1 0 0000110101111000 1 0 0000110111100000 4 0 0000110111100100 3 0 0000110111101000 3 0 0000110111110100 5 0 0000110111111000 1 0 0011000000010000 1 1 0011000000100000 1 1 0011000000100111 1 1 0011000000110011 4 0 0011000000110111 2 0 0011000000111000 3 1 0011000000111011 8 2 0011000000111111 5 0 0011000010100011 2 0 0011000010101000 1 0 0011000010110011 3 0 0011000010110111 2 0 0011000010111000 1 0 0011000010111011 5 0 0011000010111111 3 0 0011000101100011 2 0 0011000101100111 1 0 0011000101101011 3 0 0011000101101111 2 0 0011000101111111 4 0 0011000111100111 2 0 0011000111101011 3 0 0011000111101111 9 0 0011000111110011 4 0 0011000111110111 3 0 0011000111111010 1 0 0011000111111011 5 0 0011000111111111 3 0 0011001000110011 1 0 0011001111100111 1 0 0011110000100000 1 0 0011110000100100 9 0 0011110000101000 1 0 0011110000101100 1 0 0011110000110100 5 0 0011110000111000 1 0 0011110000111100 2 0 0011110010100000 2 0 0011110010100011 1 0 0011110010101000 1 0 0011110010110000 1 0 0011110010110011 2 0 0011110010111000 1 0 0011110010111111 1 0 0011110101100100 1 0 0011110101101000 1 0 0011110101101011 1 0 0011110101101100 1 0 0011110101111100 2 0 0011110111100000 2 0 0011110111100011 1 0 0011110111100100 3 0 0011110111101011 2 0 0011110111101100 1 0 0011110111101111 1 0 0011110111110011 2 0 0011110111110100 3 0 0011110111111011 1 0 0011110111111100 1 0 0011111101110000 1 0 0011111111101100 1 0 0100000000101000 1 0 0100000000101011 1 0 0100000000110011 1 1 0100000000110100 1 0 0100000010101111 1 0 0100000010110011 1 0 0100000010111011 2 0 0100000101100011 1 0 0100000101111011 1 0 0100000111100000 1 0 0100000111100011 2 0 0100000111100100 1 0 0100000111100111 2 0 0100000111101011 2 0 0100000111101111 3 1 0100000111110011 2 0 0100000111110100 2 0 0100000111110111 4 0 0100000111111011 3 0 0100000111111111 6 0 0100001111110111 1 0 0100001111111111 3 0 0100110000110100 1 0 0100110010100000 1 0 0100110111100000 1 0 0100110111100111 1 0 0100110111101000 1 0 0100110111111000 2 0 0100110111111111 1 0 0111000000110000 1 0 0111000000110011 1 0 0111000000110101 1 0 0111000000110111 1 0 0111000000111011 1 0 0111000000111111 1 0 0111000010100111 2 0 0111000010101011 1 0 0111000010101111 1 0 0111000010110000 1 0 0111000010110011 2 0 0111000010110111 2 0 0111000010111111 1 0 0111000101100100 1 0 0111000101100111 1 0 0111000101111011 2 1 0111000111100000 1 0 0111000111100011 7 0 0111000111100100 4 0 0111000111100111 4 0 0111000111101000 1 0 0111000111101011 7 0 0111000111101111 10 1 0111000111110011 8 0 0111000111110100 3 0 0111000111110111 14 0 0111000111111000 1 0 0111000111111011 14 0 0111000111111100 3 0 0111000111111111 16 0 0111001010101100 1 0 0111001111100111 2 0 0111001111101111 1 0 0111001111110111 1 0 0111001111111111 1 0 0111110000100111 1 0 0111110000101111 1 0 0111110010100000 1 0 0111110010100111 1 0 0111110010110000 2 0 0111110010110100 1 0 0111110010110111 1 0 0111110101101000 1 0 0111110101110000 1 0 0111110101111111 1 0 0111110111100000 1 0 0111110111100011 1 0 0111110111100111 4 0 0111110111101000 5 0 0111110111101011 3 0 0111110111101100 3 0 0111110111101111 5 0 0111110111110000 2 0 0111110111110011 2 0 0111110111110100 4 0 0111110111110111 3 0 0111110111111000 3 0 0111110111111011 5 0 0111110111111100 1 0 0111110111111111 7 1 0111111111110000 1 0 1000000000000011 2 2 1000000000010000 6 6 1000000000010001 2 2 1000000000010010 2 2 1000000000010011 5 5 1000000000011000 1 1 1000000000011011 3 3 1000000000100000 5 0 1000000000100011 9 0 1000000000101000 1 0 1000000000101011 6 0 1000000000101111 1 0 1000000000110000 25 4 1000000000110001 1 1 1000000000110010 4 1 1000000000110011 25 5 1000000000110100 1 1 1000000000110111 2 0 1000000000111000 9 3 1000000000111010 1 1 1000000000111011 25 2 1000000000111100 1 1 1000000000111111 1 0 1000000010100011 1 1 1000000010110011 5 1 1000000010111000 1 1 1000000010111011 1 0 1000000010111111 1 0 1000000101110011 1 0 1000000111110000 1 0 1000000111110011 1 1 1011000000100000 3 0 1011000000100011 5 0 1011000000101000 3 0 1011000000101011 4 0 1011000000110000 2 0 1011000000110011 18 2 1011000000111000 4 1 1011000000111011 17 1 1011000000111110 1 0 1011000000111111 1 0 1011000010101011 1 0 1011000010110011 4 0 1011000010111011 1 0 1011000010111111 1 0 1011000101101011 1 0 1011000101111000 1 0 1011000101111011 1 0 1011000111110011 1 0 1100000000011000 1 1 1100000000110011 1 0 1100000000110111 1 0 1100000000111011 3 1 1100000010110111 1 0 1100000111110011 1 0 1111000000100000 1 0 1111000000100011 1 0 1111000000101011 1 0 1111000000110011 3 0 1111000000110100 1 0 1111000000111000 1 0 1111000000111011 3 0 1111000000111111 1 0 1111000010110011 1 0 1111000010111011 1 0 1111000101110011 1 0 1111000111101011 1 0 1111000111110011 1 0 1111000111111011 1 0 2000000000000000 1 1 2000000000010000 2 2 2000000000010001 1 1 2000000000010011 1 1 2000000000011000 1 1 2000000000100011 1 0 2000000000101011 2 1 2000000000110000 1 0 2000000000110010 1 1 2000000000110011 15 4 2000000000110110 1 0 2000000000110111 3 0 2000000000111000 3 0 2000000000111011 19 2 2000000000111111 3 0 2000000010101011 1 0 2000000010110011 1 0 2000000010110111 1 0 2000000010111011 1 0 2000000101101011 1 0 2000000101110111 1 0 2000000101111011 3 2 2000000101111111 1 0 2000000111110011 1 0 2000000111111011 2 0 2000000111111110 1 0 2011000000000011 1 1 2011000000100011 4 0 2011000000101011 7 0 2011000000101111 1 0 2011000000110000 1 0 2011000000110011 6 1 2011000000110111 3 0 2011000000111011 14 0 2011000000111111 1 0 2011000010100011 1 0 2011000010101011 1 0 2011000010110011 3 0 2011000010111011 7 0 2011000010111111 1 0 2011000101101011 3 0 2011000101101111 1 0 2011000101110000 1 0 2011000101110011 2 0 2011000101110111 1 0 2011000111100111 1 0 2011000111101011 3 0 2011000111110000 1 0 2011000111110011 2 0 2011000111110111 1 0 2011000111111011 2 0 2011000111111111 6 0 2100000000100000 2 0 2100000000110011 2 1 2100000000111011 2 0 2100000000111111 1 0 2100000010111011 1 0 2100000101111011 1 0 2100000101111100 1 0 2100000111101011 1 0 2100000111111011 1 0 2100000111111111 1 0 2111000000010011 1 1 2111000000100011 1 0 2111000000110111 1 0 2111000000111011 2 0 2111000000111111 3 0 2111000010100111 1 0 2111000010101011 1 0 2111000010101111 1 0 2111000010110011 2 0 2111000010110111 1 0 2111000010111011 5 0 2111000111100011 2 0 2111000111101011 2 0 2111000111110011 2 0 2111000111110111 2 0 2111000111111011 6 0 3000000000100011 2 0 3000000000100111 1 0 3000000000110000 1 0 3000000000110011 1 0 3000000000111011 4 0 3000000000111111 1 0 3000000010100011 1 0 3000000010101011 2 1 3000000101111011 1 0 3000000111110011 2 0 3000000111111111 2 0 3011000000101011 1 0 3011000000110011 1 0 3011000000110111 1 1 3011000000111011 4 0 3011000000111111 1 0 3011000010101011 1 0 3011000010101111 1 0 3011000010111111 1 0 3011000101100011 1 0 3011000111100011 1 1 3011000111101011 1 0 3011000111101111 1 0 3011000111111011 4 0 3011000111111111 2 0 3011001010111011 1 0 3100000000101111 1 0 3100000000110111 1 0 3100000000111111 1 0 3100000010111011 1 0 3100000101110011 1 0 3100000111100011 1 0 3100000111101111 2 0 3100000111111111 2 0 3111000000100011 1 0 3111000000101011 1 0 3111000000111011 1 0 3111000010101011 1 0 3111000101111011 1 0 3111000111100011 1 0 3111000111100111 1 0 3111000111101011 1 0 3111000111101111 1 0 3111000111110011 1 0 3111000111111011 1 0 3111000111111111 1 0 3111001111111111 1 0 |
|
29.06.2017 - 11:46
Сообщение
#11
|
|
Группа: Пользователи Сообщений: 76 Регистрация: 27.04.2014 Пользователь №: 26375 |
nokh, а как это сделать?)) Имеете ввиду регрессию Кокса?
p2004r, в принципе такое может быть, но проблема в том, что проверить это нельзя, данные не я собираю, я бы была более внимательной, их дает манагер. А можно совпадающие кейсы просто удалить, чтобы они не путали мне модель и манагеру честно признаться, что я это удалила. |
|
29.06.2017 - 18:01
Сообщение
#12
|
|
Группа: Пользователи Сообщений: 76 Регистрация: 27.04.2014 Пользователь №: 26375 |
манагер одобрил удалять совпадающие наблюдения
Подскажите, как это сделать? table(do.call(paste0,as.list(df[,-1])), df$Y) Т.е. нашла наблюдение, как их удалять? |
|
29.06.2017 - 19:49
Сообщение
#13
|
|
Группа: Пользователи Сообщений: 1091 Регистрация: 26.08.2010 Пользователь №: 22699 |
манагер одобрил удалять совпадающие наблюдения Подскажите, как это сделать? table(do.call(paste0,as.list(df[,-1])), df$Y) Т.е. нашла наблюдение, как их удалять? Вот эти "склеенные" которые имеют _точно_ одинаковое число в 0 и 1 исходах надо попробовать (каждое по очереди) удалить сначала из 0 и смотреть на то как реагирует статистика модели. Выделить достаточно просто, вот номера первой строчки из таблицы, которые по Y равны "0": Код > which(do.call(paste0,as.list(df[,-1]))=="0000000000000000" & df$Y == "0") [1] 778 852 1149 1150 1219 1231 1259 1307 1373 1375 1382 1413 1611 1643 1652 [16] 1683 1720 1743 1746 1770 1776 1784 1785 1814 1854 1889 1893 1914 1933 1947 [31] 1960 1962 1978 2000 2011 2018 как видим их и есть 36 Сообщение отредактировал p2004r - 29.06.2017 - 21:14 |
|
30.06.2017 - 18:23
Сообщение
#14
|
|
Группа: Пользователи Сообщений: 76 Регистрация: 27.04.2014 Пользователь №: 26375 |
фух) я запарилась в ручную это перебирать)) p2004r, а нельзя ли R заставить это ужасную монотонную работу автоматизировать, пока у меня голова не взорвалась?
|
|
30.06.2017 - 23:53
Сообщение
#15
|
|
Группа: Пользователи Сообщений: 1091 Регистрация: 26.08.2010 Пользователь №: 22699 |
фух) я запарилась в ручную это перебирать)) p2004r, а нельзя ли R заставить это ужасную монотонную работу автоматизировать, пока у меня голова не взорвалась? зачем вручную? Вот номера первых десяти уникальных + условие Y == 0 Код > unique(do.call(paste0,as.list(df[,-1])))[1:10] [1] "0000000000010000" "0000000000001000" "1000000000110000" "0000000000110000" [5] "0000000000100000" "0000000000011000" "0000000000111000" "0000000000000000" [9] "0000000000011011" "0000000000101000" > do.call(c, lapply(unique(do.call(paste0,as.list(df[,-1])))[1:10], function(m) which(do.call(paste0,as.list(df[,-1]))== m & df$Y == "0"))) [1] 660 665 698 701 711 712 762 785 800 817 827 848 855 857 858 [16] 860 862 863 892 974 1018 1026 1051 1055 1069 1070 1151 1152 1194 1198 [31] 1199 1228 1237 1266 1269 1278 1279 1280 1281 1286 1305 1341 1356 1357 1374 [46] 1377 1378 1379 1386 1392 1399 1436 1444 1446 1459 1478 1479 1482 1485 1486 [61] 1489 1490 1530 1534 1565 1619 1636 1647 1654 1656 1667 1669 1670 1684 1685 [76] 1687 1691 1696 1703 1719 1724 1731 1732 1736 1745 1752 1769 1774 1786 1790 [91] 1794 1800 1806 1809 1822 1824 1828 1834 1835 1836 1837 1838 1843 1846 1869 [106] 1871 1874 1875 1877 1881 1890 1891 1894 1897 1898 1899 1902 1907 1918 1920 [121] 1922 1923 1928 1929 1936 1942 1945 1946 1948 1949 1953 1955 1958 1961 1979 [136] 1980 1989 1992 1994 1999 2004 2009 2032 2033 2037 2052 685 795 868 1004 [151] 1206 1481 1509 1535 1564 1646 1649 1658 1668 1728 1744 1865 1896 1993 690 [166] 713 715 738 833 870 900 960 972 1079 1111 1162 1250 1447 1524 1604 [181] 1622 1813 1903 1969 2024 2085 2107 2125 2129 702 761 773 851 859 871 [196] 872 884 937 957 977 979 997 1031 1035 1050 1109 1144 1182 1196 1221 [211] 1262 1263 1267 1271 1273 1275 1276 1277 1328 1334 1351 1362 1365 1380 1393 [226] 1395 1406 1407 1410 1425 1426 1437 1457 1472 1543 1567 1612 1613 1639 1682 [241] 1697 1709 1766 1777 1783 1787 1791 1808 1819 1839 1857 1860 1880 1887 1895 [256] 1912 1930 1963 2005 2030 2036 2043 2051 2105 704 844 924 951 1121 1232 [271] 1236 1385 1453 1458 1474 1560 1598 1742 1882 2022 2050 705 772 846 847 [286] 889 987 989 1023 1034 1089 1090 1127 1128 1129 1130 1153 1180 1202 1220 [301] 1230 1264 1265 1270 1401 1433 1445 1483 1585 1587 1595 1597 1638 1650 1653 [316] 1657 1666 1676 1681 1698 1701 1705 1706 1708 1722 1723 1733 1735 1749 1750 [331] 1751 1763 1764 1772 1773 1782 1789 1793 1798 1801 1807 1818 1847 1855 1861 [346] 1864 1867 1868 1872 1884 1886 1900 1908 1909 1917 1934 1951 1967 1977 1981 [361] 1988 1991 2001 2007 2008 2012 2031 2057 2120 706 777 874 890 1036 1056 [376] 1117 1133 1168 1197 1213 1332 1396 1397 1443 1521 1527 1586 1629 1641 1642 [391] 1675 1692 1707 1710 1716 1762 1815 1820 1823 1842 1859 1873 1910 1916 1919 [406] 1943 1959 1982 1996 2093 2103 2110 2163 778 852 1149 1150 1219 1231 1259 [421] 1307 1373 1375 1382 1413 1611 1643 1652 1683 1720 1743 1746 1770 1776 1784 [436] 1785 1814 1854 1889 1893 1914 1933 1947 1960 1962 1978 2000 2011 2018 780 [451] 796 895 897 1158 1249 1451 1466 1491 1635 1702 1721 1737 1797 1802 1821 [466] 1888 1913 1964 1990 2002 2014 2035 744 792 941 943 1126 1268 1317 1686 [481] 1844 1940 1957 Можно просто вектор нужных значений подставить и получить номера. удалить их просто "данные[-номера, ]" |
|