- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF131:R
Материал из Linuxformat.
- R Что общего между эффективностью преподавания и Орденом иезуитов?
Содержание |
R: Поиск закономерностей
R |
---|
R на примере |
---|
|
- Что надо делать, чтобы быть хорошим преподавателем? Или: какими качествами надо обладать, чтобы занять видную должность в Ордене иезуитов? Ответы на оба вопроса дадут Евгений Балдин, Владимир Лявшук и Сергей Петров.
Студенты знают, что их ценят – следят за ними постоянно, и каждый экзамен становится праздником «раздачи слонов». С ними всё в порядке; ну, а кто оценит преподавателей? Говорят, анкетирование поможет. Проверим это!
Давным-давно в одной «далёкой-предалёкой галактике» провели анкетирование на тему «Преподаватель глазами студентов» и благополучно забыли об этом. После того, как с анкет была сдута пыль веков, выяснилось, что данные опроса представлены таблицами. Каждая строка опросной таблицы состоит из средней по группе студентов оценки по соответствующей графе анкеты. Строка также характеризуется курсом, предметом, преподавателем и кафедрой. Формат записей – CSV, то есть нечто вроде
Кафедра истории и философии;Галактическая история;Галактион Иванович Планетный; 5-й курс;4,6;4,7;4,3;4,8;4,6;3.6;2,7;...
Можно ли, оперируя этой информацией, поделить преподавателей на «хороших» и «плохих» – и, главное, как здесь применить R? Давайте попробуем разобраться.
Однажды в вузе
Для начала импортируем и объединим таблицы:
> data <- rbind(read.csv2(“анкета1.csv”), + read.csv2(“анкета2.csv”), + ... + read.csv2(“анкетаN.csv”))
Увы, в реальной жизни никуда не деться от пропущенных значений, поэтому очистим от них данные опросов:
> data.clean <- na.exclude(data)
Воспользуемся методом основных компонент, чтобы уменьшить размерность анализируемых данных. График нагрузок основных компонент построим с помощью команды prcomp. В расчёте участвуют только ответы на вопросы анкеты:
> plot(prcomp((data.clean[,5:31])))
Как видно, здесь присутствует простая структура из двух факторов. Это довольно странно, учитывая, что в анкете было 26 вопросов. Иными словами, студенты давали 26 ответов, исходя лишь из двух предпосылок.
Давайте рассмотрим получившуюся простую структуру с целью идентификации двух выделенных в анализе факторов:
> biplot(prcomp(data.clean[,5:31]), + xlabs= rep( “.”, length(data.clean[,3])))
Две взаимно независимые компоненты можно идентифицировать путем сопоставления преподавателей, участвующих в оценке, с местом, которое они заняли в пространстве факторов. Перваякомпонента отражает ось «Трудный предмет – простой предмет». Вторая компонента меняется в диапазоне «Добрый преподаватель – Строгий преподаватель». По соображениям этикета подробности этого процесса мы вынужденно опускаем.
У составителя анкеты, да и у оцениваемого преподавателя, естественно, возникает философский вопрос: «Что лучше: быть добрым или злым? И что делать, если тебе досталась сложная для студентов учебная программа?» Дело в том, что любое простое суммирование набранных преподавателями баллов с целью получить интегральную оценку будет эквивалентно проведению оси через построенное нами факторное пространство под определенным углом.
На самом деле, мера, определяющая качество взаимодействия в системе «студент–преподаватель», имеется. Задумаемся над вопросом: «Кто из преподавателей получил оценки вбли зи начала координат факторной плоскости?». Кто всегда получает среднюю оценку? Очевидный ответ: тот, о котором ничего особенного не помнят!
Если преподаватель взаимодействовал со студентом в процессе обучения достаточно сильно, то он оставил в его сознании чёткий след, способный отражать и доброту, и строгость, и сложность, и простоту... а также любое их сочетание! Иными словами, сила взаимодействия в системе «преподаватель–студент» – это длина вектора, проведенного из начала координат к точке на факторной плоскости, соответствующей анкете оцениваемого преподавателя.
Нам остается воспользоваться теоремой великого Пифагора
> result.pca <-prcomp((data.clean[,6:32]))$x[,1:2] > vlijanie <- (result.pca[,1]^2 + result.pca[,2]^2)^0.5
Посмотрим, каково распределение полученной величины.
> plot(density(vlijanie)) #рисуем плотность распределения данных > rug(jitter(vlijanie)) #добавляем по оси х штрихи значений данных > boxplot(vlijanie, + add= TRUE, #добавляем на тот же график + horizontal=TRUE, #располагаем boxplot по горизонтали + at= 0.2, #позиция срединной линии boxplot + boxwex = 0.2) #масштаб ширины boxplot
Оцененная сила воздействия преподавателя на студентов – неоднозначная величина. Безусловно, плохо, когда студенты «не помнят» преподавателя, но что делать с противоположным случаем? Может ли воздействие быть слишком сильным? Очевидно, по аналогии с другими рецепторами организма, любое чрезмерное воздействие приводит к повреждению и уж точно ощущается воспринимающим как дискомфорт.
«Золотая середина» получается действительно в середине, и это порождает определённые трудности. Выделить «лучших», как обычно стремятся организаторы таких опросов, принципиально невозможно, так как они плавно перетекают в «не лучших».
Дело в том, что вопросы, задаваемые в анкете, не позволяют измерить то, о чём они напрямую спрашивают. Это крайне наивный, как показывает наш анализ, подход. Анкета позволяет лишь измерить некоторые объективные характеристики, исходя из которых отвечающий заполняет анкету. Анализируемый опросник позволит только узнать, кто из преподавателей вообще остался не замечен студентами. К ним, а также к тем, кто оставил в душе школяров слишком глубокий след, нужно присмотреться повнимательнее.
Орден иезуитов
Есть те, кто считает, что история – это не наука. Она, как правило, не говорит на языке математики и в какой-то мере даёт простор для спекуляций, то есть надуманных субъективных оценок. Объективность всячески приветствуется, но где её взять? Основную опасность для исторического исследования представляет искушение описать ушедшую реальность при помощи классификаций и понятий современности. Но такие вещи, как «государство», «экономика», «собственность» содержат внутри себя клише, сложившиеся в контексте современной культуры. Описание прошлого на основе применения к нему подобных клише чревато риском модернизации и ставит под вопрос валидность исторического исследования. Парадокс в том, что одни и те же данные, хранящиеся в архивных документах, допускают выдвигать и доказывать диаметрально противоположные гипотезы. В этом случае лучше послушать, что говорят сами данные, без нашей подсказки.
Не будем, как в случае анкет, сдувать архивную пыль – это вредно для здоровья. Возьмём в руки скучный документ. Его оригинал находится в Риме в Главном архиве Ордена иезуитов Archivum Romanum Societatis Iesu (ARSI). Пятый фонд в этом архиве называется Germania и касается жизни Германской Ассистенции Товарищества, куда входили также Польская и Литовская провинции ордена.
Том номер 130 из фонда Germania фактически представляет собой канцелярскую книгу, в которую для сведения генерала ордена заносились предложения провинциалов по кандидатурам на должность настоятеля определенного дома ордена и следующего провинциала. Таких записей с кандидатурами в период с 1684 по 1705 год зарегистрировано 412, то есть ведение книги начато при правлении генерала Шарля де Ноэля (1682–1686) и окончено со смертью генерала Тирсо Гонсалеса (1687–1705).
Генералу, как правило, представлялась тройка кандидатур (по-латыни, terno), из которых он обычно выбирал первую по счету (отступлений от правил в книге зарегистрировано только 9). Если же ни одна из трёх предложенных кандидатур генерала не устраивала, то его канцелярия запрашивала у провинциала новое представление. Так произошло в 53 случаях из 412 (доля отвергнутых представлений равна 13 %), большинство из которых пришлось на конец правления де Ноэля и первую половину правления Гонсалеса, что свидетельствует об активном воздействии генералов на кадровую политику провинций.
Данные в Germ.130 представлены в виде последовательных записей вида:
Pro rectoratu Vilnensi, 1684, Kitnowski Petrus, Krasnodebski Adamus, Wyrwicz Andreas
Как видно, здесь указаны название должности, год и три кандидатуры, предложенные провинциалом. Иногда (крайне редко) провинциал предлагал менее трёх кандидатур за раз, и, видимо, отдельно обосновывал своё предложение. За двадцать лет так случилось только 8 раз (в двух случаях запись содержит две кандидатуры и в шести – только одну кандидатуру). Иногда, наоборот, провинциал предлагал больше, чем три кандидатуры на выбор. В период с 1684 по 1695 год так произошло 20 раз (16 раз по 4 кандидатуры, 3 раза по 5 кандидатур и 1 раз – 7 кандидатур).
В последующие 10 лет ведения книги подобных случаев не зафиксировано. Примечательно, что несколько чаще нарушение правила выбора из трех кандидатур происходило в случае домов Польской провинции. Так, на должность провинциала Польской провинции предлагалось в 1687 г. 4 кандидата, в 1691 г. – 7 кандидатов, в 1695 – 5 кандидатов.
Ищем зависимости
Используя утилиты обработки текстовой информации awk и sed, можно получить список пар «претендент–должность», причём должность фактически означает географическую привязку. Далее, мы свернули этот список в таблицу (небольшая часть которой представлена на рис. 4), по строкам которой расположились географически локализованные ректорские должности, а по столбцам – претенденты:
> library(“xtable”) > iesu_table <- table(read.table(“data_iesu.txt”, sep=”,”) + )[c(137, 27, 112, 55, 92),2:4] > colnames(iesu_table)<-c(“Pro~Domo Vilnensi”, + “Pro~Domo Nesvisiensis”, + “Pro~Domo Varsaviensi”) > xtable(iesu_table, > align=”lp{1.6cm}p{1.6cm}p{1.6cm}”)
На пересечении строки и столбца находится количество выдвижений данного кандидата на данную должность за весь период наблюдений. Обработаем эту таблицу методом основных компонент.
> plot(prcomp(t(table(read.table(“data_iesu.txt”, + sep=”,”)))))
Вскрытая анализом факторная структура состоит из трёх факторов. Давайте посмотрим на реальные данные в пространстве первых двух факторов (рис. 6).
> labelxs <- gsub(“_”, + “ “, + rownames(t(table(read.table(“data_iesu.txt”, + sep=”,”))))) > labelxs <- sub(“(Pro rectoratu) “, “”, labelxs) > labelxs <- sub(“(Pro Domo) “, “”, labelxs) > labelxs <- sub(“(tiae) “, “tiae\n “, labelxs) > labelxs <- sub(“(Pro regenda) “, “”, labelxs) > labelxs <- sub(“(Provincia )”, “Provincia\n”, labelxs) > labelxs <- sub(“(Professa )”, “Professa\n”, labelxs) > labelxs <- sub(“(Collegii )”, “Collegii\n”, labelxs) > labelxs <- sub(“( ad )”, “\n ad “, labelxs) > biplot(prcomp(t(table(read.table(“data_iesu.txt”, + sep=”,”)))), + cex=c(0.25,0.25), + arrow.len = 0.025, + ylabs = 1:length(t(table(read.table(“data_iesu.txt”, + sep=”,”)))[1,]), + xlabs = labelxs, + )
Красным нанесены переменные, в которых оценивались должности. На основе их вклада и были выведены оси-факторы. Горизонтальная ось (первый фактор) отражает наличие естественной группировки – следовательно, это проявление ложного коэффициента корреляции. Данный корреляционный вклад вносят две несвязанные группы. Какие? По названиям коллегиумов, заглянув в энциклопедию (http://www.jezuici.krakow.pl/bibl/enc.htm), обнаружим, что они расположены в разных провинциях: польской и литовской. Обе провинции находятся на территории одного федеративного государства Речи Посполитой, в котором было несколько административных центров: Краков, Варшава, Вильно. Вертикальная ось отражает иерархию, существующую внутри провинций. Об этом свидетельствует концентрация руководящих должностей в столичных городах (Варшаве, Вильно и Кракове) в нижней части графика. Таким образом, выделенную ось мы можем с полным правом назвать «столичность–глубинка».
> biplot(prcomp(t(table(read.table(“data_iesu.txt”, + sep=”,”)))) , + choices= c(2,3), + xlabs = labelxs, + arrow.len = 0.025, + cex=0.25)
Третий фактор показывает стоящую отдельно группу должностей Пруссии, формально входившей в Литовскую провинцию. Это хороший повод отдельно рассмотреть факторную структуру Литовской провинции (подмножество из data_iesu.txt).
> labelxs <- gsub(“_”, + “ “, + rownames(t(table(read.table(“data_litwa.csv”, sep=”,”))))) > labelxs <- sub(“(Pro rectoratu) “, “”, labelxs) > labelxs <- sub(“(Pro Domo) “, “”, labelxs) > labelxs <- sub(“(tiae) “, “tiae\n “, labelxs) > labelxs <- sub(“(Pro regenda) “, “”, labelxs) > labelxs <- sub(“(Provincia )”, “Provincia\n”, labelxs) > labelxs <- sub(“(Professa )”, “Professa\n”, labelxs) > labelxs <- sub(“(Collegii )”, “Collegii\n”, labelxs) > labelxs <- sub(“( ad )”, “\n ad “, labelxs) > biplot(prcomp(t(table(read.table(“data_litwa.csv”, + sep=”,”)))), + arrow.len = 0.025, + xlabs = labelxs, + cex=0.25)
Мы видим слева Пинск, а справа – прусские Брунсберга и Решель. Что же отличает эти должности друг от друга? Национальная принадлежность кандидатов! Посмотрев на имена, вы сразу же заметите явную концентрацию славянских фамилий (оканчивающихся на «-ски») слева, а иностранных (немецко-звучащих) – справа.
Первый фактор явно отражает национальные различия – как в пространстве признаков, так и в пространстве значений. Полюса оси – это «прусскость» и «белорусскость».
Второй фактор – знакомая нам «столичность–провинциальность», отражающая иерархию в организационной структуре провинции. Данный переход подтверждает спектр фамилий руководящих кадров ордена. Слева видны польские фамилии, а справа – не польские (чаще немецкие).
Эта же картина переносится на должности. В провинциальных городах немецкая часть спектра фамилий отсутствует вообще. В столицах же присутствуют и немцы, и поляки, причём они расположены согласно оси первого фактора.
И что с того?
Итак, что же вскрыла подобная обработка исторических сведений? Что представляет собой пространство факторов? Оно представляет собой пространство принятия кадровых решений (фрагмент соответствующей карты мира) в сознании провинциалов Ордена и двух генералов в период с 1684 по 1705 год.
Что получили в результате историки? Фактическую информацию для проверки своих гипотез. Мы увидели зависимость, о которой никто никогда не говорил явно, но все учитывали, когда принимали решения. Естественно, её можно обнаружить и «методом пристального вглядывания». Статистика – всего лишь инструмент, но в ряде случаев – инструмент удобный. А R и Linux – подходящие инструменты для статистических исследований.