Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум врачей-аспирантов _ Медицинская статистика _ Факторный анализ

Автор: Игорь 21.02.2023 - 20:05

Хотелось бы предложить для обсуждения следующую проблему. Факторный анализ, как известно, связан с решением проблемы собственных значений, варимаксом, оценкой общностей и т.д., в зависимости от метода. Но основное - построить корреляционную матрицу. При использовании количественных признаков корреляционная матрица состоит из коэффициентов корреляции Пирсона, посчитанных из взятых попарно признаков. Построенная таким образом корреляционная матрица является положительно полуопределенной (матрицей Грама), что гарантирует неотрицательность собственных значений (эквивалентных мере дисперсии, объясняемой факторами) и действительность собственных векторов, которыми можно изобразить близость признаков.
Некоторыми авторами, однако, выдвигалась идея построения корреляционной матрицы из коэффициентов корреляции для порядковых признаков (Кендалла, Спирмена) и даже коэффициентов типа корреляции для бинарных и смешанных признаков (в том числе подход Гауэра). Вот тут и начинаются проблемы. Авторы, очевидно, дальше теоретических изысканий не шли, а зря. Расчеты показывают, что корреляционная матрица, построенная из неколичественных признаков, матрицей Грама часто не является со всеми вытекающими сложностями (отрицательные собственные значения и комплексные собственные вектора), препятствующими интерпретации результатов расчета.
P.S. Вопрос возник в ходе работы по проверке и активации в ПО StatAnt факторного анализа по просьбам пользователей.

Автор: 100$ 22.02.2023 - 15:24

Эпиграф: "Нет матрицы Грама - нет факторного анализа" (с) Игорь

А чего тут обсуждать? Надо пробовать и сообщать о результатах.

Например, в таком формате: "У меня было три дихотомических переменных, сиречь три столбца нулей и единиц.
Для попарных таблиц сопряженности рассчитал 3 значения тетрахорического коэффициента корреляции, состряпал корреляционную матрицу (размера 3х3) с общностями на главной диагонали и..."

А мы почитаем.

Автор: Игорь 23.02.2023 - 18:08

Цитата(100$ @ 22.02.2023 - 15:24) *
Эпиграф: "Нет матрицы Грама - нет факторного анализа" (с) Игорь

Да, идея практически теми же словами на с .46 перевода Хармана (цитирую полностью - там ссылки на обоснование): "Матрица коэффициентов корреляции (с единицами на главной диагонали) есть матрица Грама (см. теорему 4.5); замена диагональных членов оценками общностей считается допустимой, если только сохраняются свойства матрицы Грама (см. гл. 5)."
Хотелось воспроизвести функциональность, которая была в AtteStat, в программе StatAnt. Вопрос - нужно ли. Недостаточно обоснованные полуэвристические методы оценки общности, которые иногда "портили" корреляционную матрицу, всегда вызывали сомнение. Также примеров "порчи" всей картины коэффициентами, отличными от Пирсона, было много при работе над программой и статьей и сейчас дешевле опираться на горькие воспоминания, чем ввести алгоритмы (они есть в наличии) в ПО, убедиться в их неработоспособности и выбросить.
По этим причинам в StatAnt-е будут (уже есть в тестовой версии) метод главных компонент (метод главных факторов без оценки общности) и, вероятно, метод максимального правдоподобия Лоули-Максвелла как единственный, по нашему мнению, научно обоснованный метод, вычисляющий общности. А корреляционная матрица для всей этой красоты - только из коэффициентов Пирсона. Об остальном лучше не упоминать.

Автор: 100$ 23.02.2023 - 22:53

Цитата
А корреляционная матрица для всей этой красоты - только из коэффициентов Пирсона. Об остальном лучше не упоминать.


Выложил хохмы для пример по собственному формату:
1) три дихотомических переменных;
2) три таблицы сопряженности: 1 vs 2, etc.
3) три тетрахорических коэффициента по Bonett & Price (2005)

Voila!

И единицы на главной диагонали пробовал, и общности в корреляционной матрице- на глаз - все работает.
Файл прикрепил.



 ФА_дихотомических_переменных.rar ( 14,59 килобайт ) : 195
 

Автор: Игорь 24.02.2023 - 17:08

Цитата(100$ @ 23.02.2023 - 23:53) *
Выложил хохмы для пример по собственному формату:
1) три дихотомических переменных;
2) три таблицы сопряженности: 1 vs 2, etc.
3) три тетрахорических коэффициента по Bonett & Price (2005)
Voila!
И единицы на главной диагонали пробовал, и общности в корреляционной матрице- на глаз - все работает.
Файл прикрепил.

Спасибо огромное за пример. Это такая же ценность, как исходный код. Сделал факторный анализ на основе тетрахорического коэффициента, что действительно необходимо пользователям. Заодно добавил и другие методы анализа для дихотомических переменных в соответствующие разделы.
Но немного о плохом. Видимо, давно не занимался данным разделом статистики - делал факторный анализ по просьбе биологов в году этак 1993. Оказалось, за прошедшее время коэффициент Бравайса (он же Ф, он же БЫЛ тетрахорическим) стал неактуальным. Тетрахорический коэффициент стал ареной интеллектуальных сражений. Аппроксимаций неимоверное количество. Взял здесь https://real-statistics.com/correlation/polychoric-correlation/tetrachoric-correlation-estimation/).
Немного погорячился с невозможностью факторного анализа неколичественных признаков, но вспомнил - речь была о смешанных признаках, т.е. массив данных представляет собой набор признаков, измеренных в разных шкалах, а корреляционная матрица - соответственно, смесь в одной куче различных коэффициентов корреляции (Пирсона, Кендалла, Бравайса, точечно-бисериальные). Возможно, решение данной проблемы состоит в предварительной нормализации (натолкнула идея из Вашего примера) и применении одного коэффициента корреляции (например, Пирсона) для вычисления всей корреляционной матрицы, а не в зоопарке коэффициентов.

Автор: 100$ 24.02.2023 - 23:24

Цитата(Игорь @ 24.02.2023 - 17:08) *
Аппроксимаций неимоверное количество. Взял здесь https://real-statistics.com/correlation/polychoric-correlation/tetrachoric-correlation-estimation/).


Да, Зайонц и меня (по разным поводам) выручал не раз. Он там возится с аппроксимацией Эдвардса и Эдвардса (Edwards & Edwards, 1984). Я в свое время тоже реализовывал эти формулы и сравнивал с тем, что выдает Stata. У меня ничего не совпало: Stata как-то очень хитро потом "докручивает" этот коэффициент, но внятным описанием методики не побаловали, и суть этого действа я не уловил. Так и лежит - ждет своего часа.


Цитата
Немного погорячился с невозможностью факторного анализа неколичественных признаков...


Не сказал бы, что погорячились: кривыми оценками общностей немудрено запороть корреляционную матрицу и в идеальных условиях.

Цитата
... но вспомнил - речь была о смешанных признаках, т.е. массив данных представляет собой набор признаков, измеренных в разных шкалах, а корреляционная матрица - соответственно, смесь в одной куче различных коэффициентов корреляции (Пирсона, Кендалла, Бравайса, точечно-бисериальные). Возможно, решение данной проблемы состоит в предварительной нормализации (натолкнула идея из Вашего примера) и применении одного коэффициента корреляции (например, Пирсона) для вычисления всей корреляционной матрицы, а не в зоопарке коэффициентов.



По поводу "зоопарка коэффициентов" у меня только в отношении пары "непрерывная переменная vs. ординальная переменная" некоторые сомнения: думается, что в этом случае надо затевать дисперсионный анализ. Но что брать в качестве оценки связи - омегу-квадрат? Эту-квадрат?

Если бы вы все это реализовали - крутизна была бы неимоверная.
Вот только как оценивать общности?

P.S. Однако, это все хорошо, но ведь nokh неоднократно упоминал на форуме о GIFI-трансформации, ссылаясь на де Лью и соавт. (de Leeuw). Неужели все не впрок?

Вот, не поленился - загуглил, а у ребят уже целый пакет готов. https://cran.r-project.org/web/packages/Gifi/Gifi.pdf. Раньше-то у них только {homals} был...

P.P.S. Но вообще у меня сформировалось стойкое убеждение, что сваливание до кучи всех этих дихотомических, ординальных и непрерывных переменных размывает картину, делает ее диффузной и плохо читаемой.

Автор: Игорь 25.02.2023 - 08:45

Ну вот, как всегда - в самом конце, уже собирался на 6 языков переводить. В процессе так называемого "дурацкого" этапа тестирования (когда вводятся какие попало данные в надежде обрушить программу) получены неудобные результаты - чтобы развалить красивую теорию, достаточно одного опровергающего ее примера.
Баловался с Вашими данными. Но взял не всю матрицу 100 х 3, а первые 15 строк (15 х 3). При использовании тетрахорического коэффициента получено отрицательное минимальное собственное значение, что разрушает интерпретацию. Вернул классический Ф-коэффициент Бравайса - считается нормально, как и предсказано (Окунь, с. 36). Это не значит, что тетрахорический коэффициент плохой. Это значит, что он, предположительно, не подходит для факторного анализа. Выводы не фатальные - у Окуня на с. 19 сказано со ссылкой на Тэрстоуна: "Не так уж важно точное значение коэффициентов корреляции или их стандартных ошибок, а гораздо существеннее общее расположение выявленных факторов.... У исследователя, рассчитывающего на этом этапе сверхточные значения коэффициентов корреляции, отсутствует чувство юмора ..." и т.д.

Чувство юмора... Статья Леонов В.П. Факторный анализ: основные положения и ошибки применения // Международный журнал медицинской практики, 2005, N 3, с. 14-16. В третьем абзаце с конца остроумно высмеивается факторный анализ качественных признаков. smile.gif

Автор: 100$ 25.02.2023 - 12:50

Цитата(Игорь @ 25.02.2023 - 08:45) *
При использовании тетрахорического коэффициента получено отрицательное минимальное собственное значение, что разрушает интерпретацию. Вернул классический Ф-коэффициент Бравайса - считается нормально, как и предсказано (Окунь, с. 36). Это не значит, что тетрахорический коэффициент плохой. Это значит, что он, предположительно, не подходит для факторного анализа.


По идее, в этот момент ПО должно автоматически перебрать несколько возможных тетрахорических к-тов, н-р
1) описанный в статье Кирка (1973 г.)
2) Бонетта и Прайса (2005 г) etc.
3) еще что-нибудь
с выдачей сообщения типа: "По техническим причинам к-т Эдвардса и Эдвардса заменен на... Благодарю за внимание".

Автор: ИНО 25.02.2023 - 16:57

Цитата(Игорь @ 25.02.2023 - 08:45) *
Чувство юмора... Статья Леонов В.П. Факторный анализ: основные положения и ошибки применения // Международный журнал медицинской практики, 2005, N 3, с. 14-16. В третьем абзаце с конца остроумно высмеивается факторный анализ качественных признаков. smile.gif

Там куда более юмористичен рисунок:

Особенно забавляет то, что состряпавший его человек как-то умудряется впаривать свои услуги в сфере анализа данных и еще при этом кого-то высмеивать. Дураков в России лет на сто припасено (С).

P.S. На биофаке ДонНУ, где я учился, был, мягко говоря, кастрированный курс биометрии, но даже на нем многоуважаемый великий и ужасный дохтор Лео с такой картинкой получил бы неуд.

Автор: nokh 26.02.2023 - 20:09

Цитата(100$ @ 25.02.2023 - 01:24) *
P.S. Однако, это все хорошо, но ведь nokh неоднократно упоминал на форуме о GIFI-трансформации, ссылаясь на де Лью и соавт. (de Leeuw). Неужели все не впрок?
Вот, не поленился - загуглил, а у ребят уже целый пакет готов. https://cran.r-project.org/web/packages/Gifi/Gifi.pdf. Раньше-то у них только {homals} был...
P.P.S. Но вообще у меня сформировалось стойкое убеждение, что сваливание до кучи всех этих дихотомических, ординальных и непрерывных переменных размывает картину, делает ее диффузной и плохо читаемой.

Да, метод вообще шикарный, стал одним из моих любимых, всё им с биологами и врачами считаем. Практика показала, что всё сваливать в кучу можно, получается хорошо, но не всегда то, что хотелось бы. Но это касается главным образом метки принадлежности к группе (например группа сравнения и пара групп заболеваний или степени тяжести заболевания). В последнем случае первой главной компонентой получаются именно групповые особенности (нагрузка на метку принадлежности к группе самая высокая) и все показатели которые там с заметными нагрузками - те, по которым обнаруживались различия средних; т.е. данная компонента получается тривиальной. Но при этом бывает, что за этой ГК идут другие, которые являются общими для всего массива данных без учёта групп: например, связанные с полом или какие-то биологические паттерны. Их было сложно обнаружить на фоне сильных межгрупповых различий, но сняв таковые вместе с первой ГК их можно обнаружить. В случае когда метку группы включать не хочется по каким-то причинам, её можно включить как дополнительную переменную - она не будет участвовать в анализе, но её метка будет отслеживаться и выдаваться в матрице нагрузок. Например таким признаком может быть возраст: если мы включим его в анализ полноценным признаком, то он будет участвовать в решении, если же не включим, а будем только отслеживать, тогда возрастные закономерности (если они есть) получатся "чистыми", а то что это именно возрастные - увидим по нагрузке этой дополнительной переменной. Отдельная песня - графики оцифровки категориальных и порядковых показателей, да и количественных тоже.

Как ни хотел я слезть с иглы CATPCA из SPSS. не получается пока: это лучшая реализация идеи с широким спектром настроек, позволяющих получать решения аналогичные классическому PCA и классическому анализу соответствий со всеми переходными вариантами (у меня обычно типа рангового PCA получается). Пробовал и homals, и Gifi, завёл папки, обкатывал на разных примерах. Иногда получается аналогично, иногда - грубее, на одном датасете вообще ерунду получил - так и не разобрался почему, но никогда - лучше. Единственное - подсмотрел там такой вариант, когда каждое уникальное значение для показателя используется в качестве узла сплайна - там эту настройку можно задать встроенной в функцию настройкой. Пробовал это в CATPCA задавая число узлов равным числу наблюдений (программа ругается, но для каждого показателя берёт в итоге максимально возможное число узлов) - получается хорошо, доля объяснённой дисперсии всегда увеличивается и видимо это максимум возможной.

Как ни странно, до сих пор не определился полностью с необходимостью вращения решения. Раньше когда сидел на Statistica, и позже - на KyPlot (там много хороших настроек и вариантов факторного анализа, включая расчёт начальных значений общностей по Йореско), всегда крутил варимакс, а пару раз (не исключалась корреляция факторов) - прямой облимин. Последнее время много расчётов делаю в PAST (там нет FA, только PCA) привык без вращений, и мне тоже нравится, всё неплохо интерпретируется. И поскольку воспроизводить матрицу корреляций и делать конфирматорный мне не надо, обхожусь компонентами. Кстати в PAST есть алгоритм итерационной импутации пропущенных значений, а также between grops PCA и within groups PCA, а недавно разработчики добавили Redundancy analysis.

Автор: Игорь 26.02.2023 - 21:57

Цитата(nokh @ 26.02.2023 - 21:09) *
Да, метод вообще шикарный, стал одним из моих любимых
Спасибо, есть несколько монографий и статей с хорошими (= в рамках доступного для понимания математического аппарата) формулами. Об оценке общностей уже говорил. Метод Лоули-Максвелла у нас есть. Реализацию других методов пока отложим - надо иметь вектор дальнейшего развития.

Автор: Игорь 28.02.2023 - 06:58

Внимательное обдумывание предложенной темы заставляет придти к следующим предварительным выводам. При формальной подстановке данных (условно назовем их выборками, хотя на самом деле это столбцы одной многомерной выборки) в формулу вычисления коэффициента Пирсона получаем:
1. Количественная-количественная = коэффициент Пирсона.
2. Количественная-качественная = точечно-бисериальный коэффициент.
3. Качественная-качественная = коэффициент Ф Бравайса (в некоторых источниках назван тетрохорическим).
Корреляционная матрица (Грам) для разнородных данных (Гауэр) готова.
Таким образом, шкалу выборки можно игнорировать в предложенной схеме вычислений, а разведочный компонентный и последующий конфирматорный анализ таких данных становится гарантированно интерпретируемым без привлечения дополнительных предположений.

Автор: 100$ 1.03.2023 - 16:42

Цитата(Игорь @ 28.02.2023 - 06:58) *
Корреляционная матрица (Грам) для разнородных данных (Гауэр) готова.
Таким образом, шкалу выборки можно игнорировать в предложенной схеме вычислений, а разведочный компонентный и последующий конфирматорный анализ таких данных становится гарантированно интерпретируемым без привлечения дополнительных предположений.


А таки шо это было?
Цытата из сборника "Шутки больших учоных" за 2022 г.?

Автор: Игорь 1.03.2023 - 20:11

Цитата(100$ @ 1.03.2023 - 16:42) *
А таки шо это было?
Цытата из сборника "Шутки больших учоных" за 2022 г.?
Сам в шоке был, когда подробно тестировать алгоритмы начал и приводить исходники в более опрятный вид. И в еще большем, когда обнаружил это в своих записях 20-летней давности (Буквально: "Палыч, на кой ты составил три функции, когда подстановка в обычного Пирсона дает те же результаты, включая значимость и ДИ? Посмотри Лакина - с учетом, что данные в примере необходимо сначала из уже группированных "развалить" в обычные выборки - и Макнемара"). Пользователю ПО, особенно неспециалисту в математике, нет разницы, что "под капотом", если считается так, как должно.
P.S. Ситуация, однако. Люди писали монографии, диссертации, статьи (Ваш покорный слуга тоже отметился), в ПО отметились, и внезапно оказалось ... ну и т.д.

Автор: 100$ 2.03.2023 - 11:58

Надо бы еще https://dic.academic.ru/dic.nsf/enc_mathematics/1966/%D0%98%D0%9D%D0%A4%D0%9E%D0%A0%D0%9C%D0%90%D0%A6%D0%98%D0%9E%D0%9D%D0%9D%D0%AB%D0%99 освоить...

Автор: Игорь 2.03.2023 - 12:05

Цитата(100$ @ 2.03.2023 - 11:58) *
Надо бы еще https://dic.academic.ru/dic.nsf/enc_mathematics/1966/%D0%98%D0%9D%D0%A4%D0%9E%D0%A0%D0%9C%D0%90%D0%A6%D0%98%D0%9E%D0%9D%D0%9D%D0%AB%D0%99 освоить...

Спасибо. Интересно. Не знал.
Еще график для факторов в пространстве главных компонент надо бы вывести: либо первые три в псевдо 3D (наверное, предпочтительно), либо все в плоских срезах по 2 компоненты (у меня так дипломники сделали).

Автор: 100$ 2.03.2023 - 16:32

Цитата(Игорь @ 2.03.2023 - 12:05) *
Спасибо. Интересно. Не знал.
Еще график для факторов в пространстве главных компонент надо бы вывести: либо первые три в псевдо 3D (наверное, предпочтительно), либо все в плоских срезах по 2 компоненты (у меня так дипломники сделали).


Хоть я трехмерщину и обожаю, но она хороша лишь тогда, когда ее можно мышью "покрутить". Как это сделано в R-овском пакете {rgl}.
В противном случае двумерные срезы предпочтительнее.

http://r-graph-gallery.com/3d.html

Автор: Игорь 4.03.2023 - 15:48

Цитата(100$ @ 2.03.2023 - 17:32) *
В противном случае двумерные срезы предпочтительнее.
В публикациях 2-3 главных компоненты/факторов анализируют. Вывод графиков уже сделал в тестовой версии. Достаточно вывести срезы 1-2, 2-3 и 1-3 факторов, можно до и после варимакса? Или достаточно 1-2 до и после вращения? Склоняюсь к последнему варианту. Не хотелось бы загромождать вывод.

P.S. Забавный источник попался по факторному анализу. Переводные японские комиксы.

Автор: passant 4.03.2023 - 18:03

Цитата(Игорь @ 4.03.2023 - 15:48) *
P.S. Забавный источник попался по факторному анализу. Переводные японские комиксы.


Там не только факторный анализ. Там и отдельно Статистика, и Регрессионный анализ, и даже Машинное обучение.
https://vk.com/wall-186208863_11025

Хотя для детей - как мне кажется - слишком рано и не понятно зачем.
Для взрослых - я бы такое читать не смог. Уж лучше 'Статистика и котики' Савельева.

Автор: ИНО 4.03.2023 - 18:57

2-3 обязательно нужно. А лучше - чтобы пользователь сам мог выбирать любую пару.

Автор: Игорь 7.03.2023 - 18:01

Аналогичная проблема в многомерном шкалировании, которое с точки зрения реализации - то же, что и факторный анализ с той разницей, что в факторном анализе исследуются параметры (т.н. техника R/P), в многомерном шкалировании исследуются объекты (это совпадает с техникой Q/O факторного анализа, если в качестве меры различия взять Евклидову метрику, а не коэффициент корреляции, точнее 1 - коэффициент корреляции). Метод также реализован в ПО.
Расчеты показывают, что матрицы различий, построенные на основе метрик, отличных от Евклидовой, приводят к появлению отрицательных собственных значений при решении проблемы собственных значений матрицы скалярных произведений, что автоматически приводит к наличию комплексных собственных векторов, которые с трудом поддаются интерпретации в терминах многомерного шкалирования. Приходим к следующей идее. Для факторного анализа может применяться только коэффициент Пирсона, для многомерного шкалирования - только Евклидова метрика. Причем и в том, и в другом случае - безотносительно к шкале измерения признаков и без какой-либо модификации ПО. Это существенно упрощает реализацию - пользователю нет необходимости выбирать метрику. Все остальное "от лукавого".
Да, графики готовы, в том числе и для многомерного шкалирования. Они немного отличаются тем, что параметров в пространстве факторов обычно немного, объектов в пространстве стимулов весьма много. Поэтому, соответственно, не имеет смысла выводить легенду, а вместо этого возле каждого объекта в пространстве стимулов ставится его номер. Такого типа графики могут использоваться и в некоторых методах кластерного анализа.
P.S. Все классические источники по факторному анализу (Харман, Иберла, Лоули, Окунь) и многомерному шкалированию (Торгерсон, Шепард, Дэйвисон) переведены на русский язык и полностью закрывают проблемы.

Автор: 100$ 7.03.2023 - 22:23

А диаграммы Шеппарда будут? В многомерном шкалировании без них делать нечего.

Автор: ИНО 7.03.2023 - 23:53

Цитата
для многомерного шкалирования - только Евклидова метрика. Причем и в том, и в другом случае - безотносительно к шкале измерения признаков и без какой-либо модификации ПО. Это существенно упрощает реализацию - пользователю нет необходимости выбирать метрику. Все остальное "от лукавого"

Для ослушавшихся сего эдикта костры предусмотрены?

Подбор метры сходства, наилучшим образом соответствующей конкретной задаче, - ключевой момент в многомерном шкалировании, без которого оно нафиг никому не сдалось: делай себе PCA, а все придуманное после - от лукавого. Разделились группы - хорошо, не разделились - на то воля великого Пирсона, которую следует принять с покорностью, вместо того, чтобы впадать в ересь поисках лучшей альтернативы. Ибо великий пророк его неопровержимо математически показал, что лишь один путь ведет к высшей истине, а все прочие вводят в заблуждение и искушение. И сколь бы много ни было дерзавших строить ординационные диаграммы, только те из них проникли в суть вещей, кто использовал корреляцию Пирсона и евклидову метрику, иные же впали во грех неверной трактовки картины данных.

А как изобретенная Вами секта относится к неметрическому многомерному шкалирвоанию? Вообще святотатство или же, соблюдая все долженствования и с благословения верховного жреца культа все-таки можно?

Автор: Игорь 8.03.2023 - 16:03

Введение набора протестированных базовых методов в ПО закончено. Для свободного проекта - почти достаточно. Дальше - "ползучее" улучшение, исправление замеченных ошибок, перевод документации. Расширение номенклатуры расчетных методов требует более глубокой интерактивности (выбор метрик, обучающих массивов данных и т.д.). Это небыстрый процесс, требующий обдумывания и затрат на программную реализацию. Вряд ли удастся привлечь энтузиастов, желающих работать бесплатно, а ни одна из разработок студентов в проект принципиально не включена.
Перевод проекта в статус проприетарных не планируется. Сбыт такого рода программ минимален, а затраты, в том числе на лицензии для средств разработки (бесплатно - только для проектов под GPL) и специалистов на полный рабочий день, велики.
Текущая лицензия позволяет любому взять исходные коды и поступать с ними в соответствии с ее положениями.

Автор: Игорь 18.03.2023 - 22:57

Цитата(ИНО @ 8.03.2023 - 00:53) *
евклидову метрику
обсуждают Cox T.F., Cox M.A.A. Multidimensional scaling.

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)