LINUX.ORG.RU

Концепция СУБД+R как замена IBM SPSS в науке — вопрос об особенностях СУБД

 , , ,


0

1

Всем привет!)

Я не знаю, насколько этот тут может быть на 100% релевантно данной тематике, но если что JB определи по контексту, если тебе не трудно.

Товарищи! Вопрос таков: Имеется IBM SPSS for Linux. Потренировавшись в пользовании TeX'ом, освоился в кодинге (хоть немного) и мозги начали «вправляться» в программирование. Но не в этом суть.

SPSS (кто не знает) --- это помесь СУБД (читай что-то типо DB2) и своего статистического анализатора (что-то типо R). Под Линуксом сие дело немного лагает... Ну и в общем, когда меня в очередной раз бомбануло (а бомбануло знатно, когда SPSS вылетел на процессе MATCH variables by keys), я стал пересчитывать на R. Пересчитал. Однако вот тягость к СУБД (для вбивания данных, их перекодировки, созданию новых переменных и т.д.) осталась.

Кто пользуется активно и ежедневно СУБД для Анализа данных (или вообще): вот, к примеру, PostgreSQL умеет делать операции вида «перекодировать переменную» (ну типо есть параметр age, в нем, допустим, 5000 записей; мне нужно сделать новый параметр age_2, где будут удалены куски из 5000 записей) и что-нибудь в этом роде?

Про тупоголовый csv я знаю. Про то, что в R тоже можно перекодировку переменных делать — знаю (но делает оно, ИМХО, долго и сложно, мне не очень понравилось). В SPSS за работу с записями и переменным отвечает внутренняя СУБД, а не «типо-R».

Заранее спасибо за помощь! Гугление пока не приводит к пониманию ситуации.

P.S. Если я что-то не уточнил, скажите пжст, постараюсь объяснить еще подробнее.

P.S.S. Никакого троллинга/флуда/срача_субд. Я говорю вообще о СУБД (без разницы, SQL/NoSQL). В SPSS нечто, напоминающее Инвалидную Реляционную БД (А-ля Access).

P.S.S.S. cast Quasar, Evgueni

★★★★★

Последнее исправление: bookman900 (всего исправлений: 2)

(ну типо есть параметр age, в нем, допустим, 5000 записей; мне нужно сделать новый параметр age_2, где будут удалены куски из 5000 записей)

Что это значит?

AnDoR ★★★★★
()

Про SciDB читал? Она вроде для всякой аналитики над большими объёмами данных заточена (правда на сколько я понял у тебя данных мало).

MrClon ★★★★★
()

ну типо есть параметр age, в нем, допустим, 5000 записей; мне нужно сделать новый параметр age_2, где будут удалены куски из 5000 записей

dplyr же, ради такой ерунды заводить БД это как по воробьям ракетами стрелять. Возможно, пистон умеет через свои либы дергать БД напрямую и изголяться с данными на них. Имхо, извращение, поэтому не пробовал.

ptarh ★★★★★
()
Ответ на: комментарий от AnDoR

Что это значит?

Смотри :))

В социологической практике при анализе больших баз данных используется порядка 2000 переменных, причем не просто переменных, там, «пол» или «возраст респодента», а сложнее.

Вот например табличка, где age-возраст, stuid-параметр1 (ну какой-то параметр), потом нужно склеить две переменные вместе и на основе склеенной допустим рассчитать кластеры:

+-----+-------+-----------+--------+
| Age | stuid | Age*stuid | CLS_1  |
+=====+=======+===========+========+
| 35  |   3   |  1,3478   |   1    |
+-----+-------+-----------+--------+
| 45  |   4   |  1,3478   |   2    |
+-----+-------+-----------+--------+
| 14  |   4   |  1,3478   |   1    |
+-----+-------+-----------+--------+
| 34  |   5   |  1,3478   |   2    |
+-----+-------+-----------+--------+
| 21  |   6   |  1,3478   |   1    |
+-----+-------+-----------+--------+
| 80  |   7   |  1,3478   |   1    |
+-----+-------+-----------+--------+

А есть такой участок базы, где уже все генерируется вручную методом перекодирования переменных: например, age кодируется как age_m (мужской пол) и age_f (женский пол), чтобы посчитать регрессии; stuid может легко превращаться в stuid_reversed (например, если этот параметр отражает доверие, допустим, ЦБ РФ, то его надо обязательно перекодировать так, чтобы ответ 1 был 5, 2 — 4 и т.д. --> перевернуть значения)

+--------+--------+-----------------+
| Age_m  | Age_f  | stuid_reversed  |
+========+========+=================+
|   35   |   23   |        1        |
+--------+--------+-----------------+
|   45   |   34   |        3        |
+--------+--------+-----------------+
|   14   |   45   |        4        |
+--------+--------+-----------------+
|   34   |   30   |        5        |
+--------+--------+-----------------+
|   21   |   43   |        6        |
+--------+--------+-----------------+
|   80   |   75   |        3        |
+--------+--------+-----------------+

В SPSS это делается одной программой: все перекодировки и создание суррогатных переменных делается на стороне компоненты СУБД, а построение кластеров — внутренней программой расчетов. Проблема начинается тогда, когда нету SPSS, а есть R. Но поскольку датасеты обычно с переменными (не просто возрастом, а уже заданным сложными подсчетами) в количестве 3000 штук, а выборка — в 50к-60к единиц, то нужно где-то это структурированно держать. Вроде СУБД в это могут совершенно спокойно.

Только вопрос: могут ли СУБД самые современные (вида PostgreSQL и/или что-нибудь из NoSQL) делать операции по смене значений внутри стобцов (как это называется...а...смена строк), сами столбцы подифицировать, «склеивать» столбцы между собой. Это все — в порядке вещей для социологического анализа. Беда в том, что вся российская методология в таком ключе базируется на SPSS, а зарубежная базируется на R, но там не делают в основном преобразования и создания новых переменных. Т.е. как-то собрали или посчитали в LO Calc новые переменные, сохранили байду всю это в .csv и вперед через R прогонять. Поскольку меня учат русской традиции, то помимо R мне нужна СУБД. Вот и спрашиваю в топике вопрос :)

///При условии, конечно, что ты работаешь плотно с СУБД))

bookman900 ★★★★★
() автор топика
Ответ на: комментарий от ptarh

ради такой ерунды заводить БД это как по воробьям ракетами стрелять

Я с тобой полностью согласен :)).

Но у меня все гораздо сложнее :))

Вот, посмотри мой коммент повыше, чтобы было понятно, чем именно я занимаюсь :)

bookman900 ★★★★★
() автор топика
Ответ на: комментарий от MrClon

Про SciDB читал?

Да, суперская вещь...Но в университете напрочь не любят научно-ориентированное ПО: Вместо LaTeX юзают Вёрд, вместо R SPSS, вместо Gephi UCINET...нутыпонел :)))

Я нашел этот пакет-интерфейс, но мне интересны и SQL-based решения, потому что если чо в универе есть кафедра погроммистов, которым SQL преподают...да и вообще код запросов SPSS — это помесь фортрана для DB2 :D

bookman900 ★★★★★
() автор топика
Ответ на: комментарий от bookman900

тебе уже ответили dplyr (в том числе реализовано использование как движка любой БД)

PS https://cran.rstudio.com/web/packages/dplyr/vignettes/introduction.html

psv1967 ★★★★★
()
Последнее исправление: psv1967 (всего исправлений: 1)
Ответ на: комментарий от psv1967

Все, я теперь понял :))) Спасибо ( ptarh тоже)

Т.е. я могу из-под R с этим пакетом как раз манипулировать данными (делать recode into different varisables, compute variable)?

bookman900 ★★★★★
() автор топика
Ответ на: комментарий от psv1967

О, спасибо))

Насколько я понял можно действительно подключиться к БД и юзать манипуляцию...Просто именно БД необходимо, потому что готовят реализацию данных в формате базы PostgreSQL, в надежде выкинув реализацию на .sav файлах.

bookman900 ★★★★★
() автор топика
Ответ на: комментарий от bookman900

могут ли СУБД самые современные

Если я правильно понял о чем ты, то это умели еще СУБД 70-х годов.

Почитай какую-нибудь вводную книжку по SQL, там все должно быть - и склеивание столбцов (join) и изменение значений (update).

Возможно стоит почитать про представления (view). У тебя будет базовая таблица со значениями и представления(псевдо-таблицы) с результатами вычислений. Меняешь значения в основной таблице - сразу же (ну, условно) изменяются результаты.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.