Логистическая регрессия в R |
Здравствуйте, гость ( Вход | Регистрация )
Логистическая регрессия в R |
12.07.2017 - 18:34
Сообщение
#31
|
|
Группа: Пользователи Сообщений: 76 Регистрация: 27.04.2014 Пользователь №: 26375 |
И такой вопросик
data(ROCR.simple) threshold1 <- function(predict, response) { perf <- ROCR::performance(ROCR::prediction(predict, response), "sens", "spec") df <- data.frame(cut = perf@alpha.values[[1]], sens = perf@x.values[[1]], spec = perf@y.values[[1]]) df[which.max(df$sens + df$spec), "cut"] } threshold1(ROCR.simple$predictions, ROCR.simple$labels) [1] 0.5014893 я правильно поняла, выше 0.5014893 мы принимаем решение, что наступит событие? |
|
12.07.2017 - 18:35
Сообщение
#32
|
|
Группа: Пользователи Сообщений: 1202 Регистрация: 13.01.2008 Из: Челябинск Пользователь №: 4704 |
Похоже мой ответ на письмо в личку не дошёл, дублирую его здесь.
Здравствуйте, nastushka. Вы не ответили на мой уточняющий вопрос, а когда мне не понятно - то и не интересно. Я перестал отслеживать вашу тему. Если в общем, то ROC-анализ более полезен для одного количественного показателя, а не для набора, т.к. позволяет выбрать пороговое значение диагностического показателя с наивысшими чувствительностью и специфичностью. В случае множественной логистической регрессии, когда показателей много, анализ и описание его результатов логично проводить в два этапа. 1) Сокращение набора предикторов. Можно сделать полную модель, и отобрать значимые. Можно сделать полную полную с пошаговым отбором (stepwise). Можно отобрать наиболее сильные предикторы случайным лесом - как вы. Можно как-то ещё. 2) В окончательную модель дать только отобранные предикторы. Привести в результатах: 2.1. константу и коэффициенты регрессии - чтобы по формуле с этими показателями можно было считать риск (прогноз) для каждого конкретного случая в области применения результатов 2.2. соответствующие этим коэффициентам отношения шансов (т.е. пересчитать логиты в OR, пакеты это делают, хотя можно и вручную) 2.3. статистическую значимость для каждого члена модели. 2.1-2.3. удобно дать таблицей. 2.4. показатели диагностической эффективности: чувствительность (с 95% доверительным интервалом), специфичность (с 95% ДИ) 2.4. можно диагностическую эффективность дополнить интегральными мерами: и долей верно классифицированных случаев, и площадью под ROC-кривой. Т.е. последняя не несёт в случае множ. логистической регресии какой-то конкретики: это просто интегральная мера качества диагностики. |
|
12.07.2017 - 18:36
Сообщение
#33
|
|
Группа: Пользователи Сообщений: 76 Регистрация: 27.04.2014 Пользователь №: 26375 |
не-не он дошел, только что прочла:)))
|
|
12.07.2017 - 18:41
Сообщение
#34
|
|
Группа: Пользователи Сообщений: 1091 Регистрация: 26.08.2010 Пользователь №: 22699 |
Похоже мой ответ на письмо в личку не дошёл, дублирую его здесь. Здравствуйте, nastushka. Вы не ответили на мой уточняющий вопрос, а когда мне не понятно - то и не интересно. Я перестал отслеживать вашу тему. Если в общем, то ROC-анализ более полезен для одного количественного показателя, а не для набора, т.к. позволяет выбрать пороговое значение диагностического показателя с наивысшими чувствительностью и специфичностью. В случае множественной логистической регрессии, когда показателей много, анализ и описание его результатов логично проводить в два этапа. 1) Сокращение набора предикторов. Можно сделать полную модель, и отобрать значимые. Можно сделать полную полную с пошаговым отбором (stepwise). Можно отобрать наиболее сильные предикторы случайным лесом - как вы. Можно как-то ещё. 2) В окончательную модель дать только отобранные предикторы. Привести в результатах: 2.1. константу и коэффициенты регрессии - чтобы по формуле с этими показателями можно было считать риск (прогноз) для каждого конкретного случая в области применения результатов 2.2. соответствующие этим коэффициентам отношения шансов (т.е. пересчитать логиты в OR, пакеты это делают, хотя можно и вручную) 2.3. статистическую значимость для каждого члена модели. 2.1-2.3. удобно дать таблицей. 2.4. показатели диагностической эффективности: чувствительность (с 95% доверительным интервалом), специфичность (с 95% ДИ) 2.4. можно диагностическую эффективность дополнить интегральными мерами: и долей верно классифицированных случаев, и площадью под ROC-кривой. Т.е. последняя не несёт в случае множ. логистической регресии какой-то конкретики: это просто интегральная мера качества диагностики. ROC для оценки модели в целом вполне себе пригоден (в том числе и для оценки модели с переменным числом предикторов). Есть методы поиска моделей основанные именно на таком критери качества. Не очень удобен он если исходов детектируемых моделью больше двух. |
|
12.07.2017 - 18:43
Сообщение
#35
|
|
Группа: Пользователи Сообщений: 1091 Регистрация: 26.08.2010 Пользователь №: 22699 |
И такой вопросик data(ROCR.simple) threshold1 <- function(predict, response) { perf <- ROCR::performance(ROCR::prediction(predict, response), "sens", "spec") df <- data.frame(cut = perf@alpha.values[[1]], sens = perf@x.values[[1]], spec = perf@y.values[[1]]) df[which.max(df$sens + df$spec), "cut"] } threshold1(ROCR.simple$predictions, ROCR.simple$labels) [1] 0.5014893 я правильно поняла, выше 0.5014893 мы принимаем решение, что наступит событие? Смотря что мы считаем событием. В любом разе выше границы один класс, ниже второй. Что по коду, то ч использую library(pROC) |
|
12.07.2017 - 18:49
Сообщение
#36
|
|
Группа: Пользователи Сообщений: 1091 Регистрация: 26.08.2010 Пользователь №: 22699 |
spec=0,06,sens=0.94 Такая модель имеет нулевую ценность. Она "срабатывает" во всех нужных случаях, но среди "срабатываний" практически все ложные. ЗЫ Если этот трешоилд отобрал критерий по весам и частотам, то наверное всё. можно конечно еще их попробовать свернуть PCA и пройтись по компонентам в поисках значимой, но это уже от безысходности . |
|
12.07.2017 - 18:56
Сообщение
#37
|
|
Группа: Пользователи Сообщений: 76 Регистрация: 27.04.2014 Пользователь №: 26375 |
поняла
Сообщение отредактировал nastushka - 12.07.2017 - 18:56 |
|
12.07.2017 - 18:59
Сообщение
#38
|
|
Группа: Пользователи Сообщений: 76 Регистрация: 27.04.2014 Пользователь №: 26375 |
я просто так считала
Сообщение отредактировал nastushka - 12.07.2017 - 20:47 |
|
12.07.2017 - 19:00
Сообщение
#39
|
|
Группа: Пользователи Сообщений: 76 Регистрация: 27.04.2014 Пользователь №: 26375 |
sensetivity=tp/(tp+fn) доля верных предсказаний плохих прибавить хороших попавшим к плохим
Специфичность specifity (доля верных хороших+ плохие попавших в хорошие) tn/(tn+fp) может я неверно посчитала? |
|
12.07.2017 - 19:24
Сообщение
#40
|
|
Группа: Пользователи Сообщений: 1325 Регистрация: 27.11.2007 Пользователь №: 4573 |
spe=1-0,06=0,94
|
|
12.07.2017 - 19:46
Сообщение
#41
|
|
Группа: Пользователи Сообщений: 76 Регистрация: 27.04.2014 Пользователь №: 26375 |
вы имеете ввиду, что 0,06 это чувствительность?
|
|
12.07.2017 - 20:35
Сообщение
#42
|
|
Группа: Пользователи Сообщений: 902 Регистрация: 23.08.2010 Пользователь №: 22694 |
|
|
12.07.2017 - 20:37
Сообщение
#43
|
|
Группа: Пользователи Сообщений: 1325 Регистрация: 27.11.2007 Пользователь №: 4573 |
Нет, вы привели таблицу из которой можно посчитать чувствительность 134/(134+8), а также специфичность 74/(74+5). По оси Х в ROC кривой не специфичность, а 1-спец, а вы написали спец=1-74/(74+5)
100$ уже пояснил Сообщение отредактировал DrgLena - 12.07.2017 - 20:39 |
|
12.07.2017 - 20:45
Сообщение
#44
|
|
Группа: Пользователи Сообщений: 76 Регистрация: 27.04.2014 Пользователь №: 26375 |
все поняла ошибку.
|
|
5.08.2017 - 17:10
Сообщение
#45
|
|
Группа: Пользователи Сообщений: 76 Регистрация: 27.04.2014 Пользователь №: 26375 |
p2004r, здравствуйте, решила написать в своем же топике, но теперь тут другой скоринг (Раньше плохой, хороший), а сейчас купит-не купит услугу(id is dep var)
Логистическая регрессия здесь, показала ужасные результаты, почти все нули(те, кто не купили) были правильно к своему классу отнесены, а единицы(те кто купили) также к нулям. Все что смогла сама сделать, это Дискриминантный анализ в SPSS, вроде показал точность 60%, но это ни о чем. Сильная перемешка кейсов. Можете подсказать, как мне модель выровнять? С регрессией что спсс, что статистика также ,как и R показывали такой результат. Тут нужно только через ДА. acc=read.csv("C:/Users/Admin/Desktop/buyning.csv", sep=";",dec=",") getwd() > acc$profitValueList=as.numeric(acc$profitValueList) > acc$revenueValueList=as.numeric(acc$revenueValueList) > acc$courtPracticeList=as.numeric(acc$courtPracticeList) > acc$digestRedList=as.numeric(acc$digestRedList) > acc$digestGreyList=as.numeric(acc$digestGreyList) > acc$digestGreenList=as.numeric(acc$digestGreenList) > acc$linkedEntitiesByCeoNumList=as.numeric(acc$linkedEntitiesByCeoNumList) > acc$linkedEntitiesByFounderNumList=as.numeric(acc$linkedEntitiesByFounderNumList) > acc$linkedEntitiesChildrenNumList=as.numeric(acc$linkedEntitiesChildrenNumList) > acc$capitalList=as.numeric(acc$capitalList) > acc$gosWinnerNumList=as.numeric(acc$gosWinnerNumList) > acc$gosWinnerSumList=as.numeric(acc$gosWinnerSumList) > acc$gosPlacerNumList=as.numeric(acc$gosPlacerNumList) > acc$gosPlacerSumList=as.numeric(acc$gosPlacerSumList) > acc$inspectionsInFutureNumList=as.numeric(acc$inspectionsInFutureNumList) > acc$inspectionsHasViolationsNumList=as.numeric(acc$inspectionsHasViolationsNumList) > acc$inspectionsNoViolationsNumList=as.numeric(acc$inspectionsNoViolationsNumList) > acc$inspectionsHasViolationsFailsList=as.numeric(acc$inspectionsHasViolationsFailsList) > acc$Выручка=as.numeric(acc$Выручка) > acc$Прибыль=as.numeric(acc$Прибыль) > acc$Убыток=as.numeric(acc$Убыток) > acc$Баланс=as.numeric(acc$Баланс) > acc$Директор.Учредитель=as.numeric(acc$Директор.Учредитель) > acc$Директор.отдельно=as.numeric(acc$Директор.отдельно) > acc$Учредитель.отдельно=as.numeric(acc$Учредитель.отдельно) > index <- sample(1:nrow(acc),round(0.75*nrow(acc))) > train <- acc[index,] > test <- acc[-index,] > library("MASS") > fitTrn =lda(id~.,data=train) Error in lda.default(x, grouping, ...) : ошибка была variables 15 16 appear to be constant within groups Как мне хотя бы маломальски точную классификацию получить?
Прикрепленные файлы
|
|