July 7th, 2014

WSS - Code Update и немного статистики

Дисклемер: описание апдейта кода инструмента широкоформатного скрининга и основная статистическая информация


### ### Статистический анализ
nrow(selected) # сколько всего
sum(selected$country == 0) - очень низкоприротетно, бинарный есть - нет
sum(selected$university_name == 0) - низкоприротетно, бинарный есть - нет
sum(selected$bdate == 0) - средний критерий приоритета, бинарный нет - есть
sum(selected$city == 0) - важный критерий наличия и очень важдый критерий по COI (города интереса), тринарный нет - есть - COI
table(selected$relation) - главный критерий приоритета, бинарный 0|1 - 5|6
### категоризация
# итого: university_name bdate city+city_u_COI relation
# вычисление рейтинга:
# country 1
# university_name 2
# bdate 2
# city 2
# city_u_COI 10
# relation 20
# задание Городов Интереса
coi <- c('Москва', 'Санкт-Петербург', 'Нижний Новгород', 'Ижевск', 'Тольятти', 'Сарапул', 'Казань', 'Киров', 'Арзамас')
# новая колонка для рейтинга
score <- rep(0, nrow(selected))
selected <- cbind(selected, score)
# оценка
for (i in 1:nrow(selected)) {
tmp <- selected[i,]
# учёт country
if (tmp$city != 0) { selected[i,'score'] <- selected[i,'score'] + 1 }
# учёт university_name
if (tmp$university_name != 0) { selected[i,'score'] <- selected[i,'score'] + 2 }
# учёт bdate
if (tmp$bdate != 0) { selected[i,'score'] <- selected[i,'score'] + 2 }
# учёт city
if (tmp$city != 0) { selected[i,'score'] <- selected[i,'score'] + 2 }
# учёт city_u_COI
if (tmp$city %in% coi) { selected[i,'score'] <- selected[i,'score'] + 10 }
# учёт relation
if (tmp$relation > 1) { selected[i,'score'] <- selected[i,'score'] + 20 }
}
# exploratory plot
plot(table(selected$score))





scoring

# разбивка на 3 приоритета до 8, после 8 и до 20, с 20
minim <- 8
maxim <- 20
abline(v = minim, col = 'blue', lwd = 2)
abline(v = maxim, col = 'red', lwd = 2)
priority <- list()
priority[['low']] <- selected[selected$score < minim,]
priority[['mid']] <- selected[(selected$score >= minim) & (selected$score < maxim),]
priority[['high']] <- selected[selected$score >= maxim,]
# итоговая статистика
sapply(priority, nrow)

# вывод приоритетных данных
for (name in names(priority)) {
filename <- paste0('PriorityList_', name, '.tab')
write.table(priority[[name]], filename, sep = "\t", quote = F, row.names = F, col.names = T)
}

Created by Pretty R at inside-R.org

При этом:
10% не указали страну
80% не указали имя ВУЗа
80% без даты рождения
20% не указали город
90% не указали статус, а не single всего у 1,35%

По описанной в коде система вычисления рейтинга в суммы факторов с разным весом (основной вклад - статус отношений в анкете и принадлежность к городам интереса) разбивается на 3 категории: low - 2131, mid - 951, high - 45. Главный фактор принадлежности к категории high является заявленный статус отношений "it's complicated/actively searching", а главный фактор принадлежности к категории mid это наличие города в списке городов интереса, более точно значение score уже определяется полнотой информации в анкете.

Фильтрация ручным просмотре страниц очень трудозатратна, потому применима лишь к списку высокого приоритета, разбор отсёк 30 человек и показал что обязателен второй этап автоматизированного анализа, поскольку оказалось что число групп иногда достигает астрономических значений (что понижает значимость принадлежности к ТГ-релевантным группам) и иногда вовсе бывает скрыто, хотя методами API Vk можно получить к этому доступ. Также автоматизированный расширенный анализ позволит эффективнее просматривать и сортировать анкетные данные.