S — язык программирования, разработанный фирмой AT&T Bell Labs (появился в середине 80-х годов), предназначен для обработки данных. Разработано несколько версий расширения языка S — S-Plus, для различных платформ (UNIX, SunOS, Windows).
В описании S-Plus (см. также ), приведенном S-Press , отмечается, что этот продукт содержит объектно-ориентированный язык программирования, что обеспечивает возможность контролировать состояние описанных на этом языке объектов в любой точке алгоритма. Причем объектами являются все наборы данных, функции и модели анализа. Это выгодно отличает данный продукт от специализированных программных пакетов. Вы больше не должны собирать команды и функции, помещать все в это черный ящик и ждать итоговой распечатки. Преимущества нового подхода состоят в обеспечении контролируемости на каждом шаге вычислений, понятности операций и уверенности в результате. Отмечается, что из концепции S-Plus исключена генерация красивых, но жестко заданных отчетов (printouts).
Краткий обзор основных черт языка S-Plus
(S-PLUS Features at a Glance ).
Имеется пользовательский интерфейс с системой меню, позволяющий осуществлять последовательность действий в диалоге с программой. Имеется встроенный объектно-ориентированный язык.
Возможности языка
S-PLUS поддерживает:
Классы (объекты), механизм наследования, обобщённые функции и методы. Операции и функции для работы со скалярными величинами, векторами и массивами Структурный язык, включающий операторы for, while, next, repeat, break. Логические операторы: >, >=, <, <=, ==,!=, &, if else, all, any. Интеллектуальные операторы для работы с объектами Объект список, позволяющий создавать структурированные массивы разнородных объектов. Функцию подстановки для цикла, обрабатывающего сходные объекты. Функции "By" и "Aggregate" (for analyzing specific variables for each of the various levels of another variable).
S-PLUS позволяет:
Создавать собственные процедуры обработки данных. Корректировать/модифицировать любую из 1650 имеющихся функций.
Интерфейс с программами на языках C и FORTRAN
Можно использовать как интерфейс (front-end) для коммерческих библиотек (IMSL, NAG и т. д.) Динамическая и статическая загрузка программ пользователя, написанных на языках C или Фортране. Динамическая загрузка DLL в Windows
Интерфейс с операционной системой
Порождение процессов. Доступ к редакторам, имеющимся в системе. Обмен данными с операционной системой и другими приложениями.
Ввод/Вывод
ASCII-файлы. Ввод данных с клавиатуры. Ввод данных из бинарных файлов, создаваемых программами пользователя, написанными на языках C или Фортране. Непосредственный экранный ввод (Interactive data editor). Вывод в форматах PostScript и HPGL. Поддерживает все драйверы принтеров в MS Windows. Импорт/Экспорт данных (data frame) из электронных таблиц Excel и Lotus 1-2-3 для Windows. Импорт/Экспорт данных из формата dBase или любого другого формата, поддерживаемого ODBC. Имеется пользовательский интерфейс с системой меню, позволяющий осуществлять последовательность действий в диалоге с программой (Interactive analysis, with step-by-step feedback).
Помощь и документация Контекстная подсказка (help system); обширная документация; Command line recall and editing; Telephone and e-mail Helpline.
Функции (Classic and modern functions insure penetrating analysis and best fit) Basic statistics Элементарная статистика (Descriptive summary statistics) Проверка гипотез по критерию Стьюдента Проверка гипотез по критерию хи-квадрат Ранговый критерий Вилксона Биномиальный тест Mantel-Haenszel test Стандартные распределения плотности Многофакторная статистика и графика Иерархическая кластеризация Метод k-средних Model-based clustering Древовидная классификация (Tree classifiers) Log-linear contingency table analysis (анализ случайностей) Minimum spanning tree (минимально разветвленное дерево) Компонентный анализ (Principal components) Факторный анализ (Factor analysis) Каноническая корреляция (Canonical correlation) Многомерное масштабирование (Multi-dimensional scaling) Chernoff’s faces Графическое представление кластеров в форме диаграмм (Star-symbol plots) и дендрограмм, отображающих дерево кластеров Матрицы графиков для пар переменных (Scatterplot matrices) Математические вычисления Операции с векторами и матрицами (+, * и т. д.) Eigenanalysis Инвертирование матриц и решение линейных уравнений Нахождение собственных (Singular) значений и QR декомпозиция Поддержка стандарта IEEE (IEEE special values supported) Интерфейс с пакетом LAPACK (численные методы линейной алгебры) Определители и нормы матриц и [conditional estimation] Решение линейных уравнений для задач неопределенности, квадратичных уравнений и метода наименьших квадратов Диаграммы оценки качества (Quality control charts) Shewhart charts Cusum charts Специализированные графики (xbar, s, np, p, c, u) Регрессия и дисперсионный анализ (Regression and ANOVA) Линейная регрессия методом наименьших квадратов (least squares) Нелинейная регрессия методом наименьших квадратов Дисперсионный анализ (Balanced and unbalanced ANOVA) Обратная регрессия (Stepwise regression) Корреляция квадратов остатков (Least trimmed squared residuals regression (high breakdown point robust regression)) Обобщенная линейная модель (Generalized linear models) Обобщенная модель роста (Generalized additive models (GAM)) Residual deviance (for model comparison) ACE and AVAS regression models Projection pursuit regression M-estimates of regression Tree-based regression Survival analysis Kaplan-Meier and Fleming-Harrington curves G-rho survival curve tests Parametric survival models Cox proportional hazards models for time dependent covariates, multiple events and discontinuous intervals of risk Formula-based model specification National rate tables for age and sex matching of subjects to estimate expected survival curves Анализ временных рядов / сигналов (Time series/signal analysis) Автокорреляция Построение автокорреляционной модели (классической и грубой) Построение АРИСС-моделей (ARIMA models) Вычисление параметров линейных фильтров Complex demodulation Спектральный анализ Преобразование Фурье и алгоритм БПФ (Fourier transformations) Сглаживание (разнообразные классические и грубые методы) Интегрированная графика, позволяющая наилучшие методы визуализации данных и результатов Вывод графиков в нескольких окнах (Multiple graphics windows) Управление мышью (Location of graphics via mouse) Анализ графиков мышью (Point identification using mouse). Переопределение цветовой гаммы (User-definable color maps). Interactive color map save/load. Трехмерное вращение графиков (3D data spinning). Матрица для отображения взаимосвязи многих переменных. Condition on different levels of an underlying variable. Formula-based display specification with conditioning on factors or continuous variables. Multi-paneled displays with flexible control over axes and aspect ratios. «Banking» computations that let the data select the aspect ratio. Трехмерная графика. Contour plot. Data spinning. Mesh surface with user-selected perspective. Image plots (pixel data representation, color or gray scale). Scatterplot matrix brushing. Двумерная графика (2D plotting). График двух переменных (X-Y scatterplots). График временной зависимости (Time series plots). Диаграммы (Box plots, pie charts, histograms, bar plots, dot charts). Семейства кривых (Overlay multiple plots or display side-by-side). Логарифмический и линейный масштабы (Log and linear axis scaling). Управление стилями линий, курсоров, текста, цветом и пр. Карты США. Функции по выводу карт (General mapping functions). Графический пользовательский интерфейс (Windows GUI features). Опции могут отображаться в специальных диалоговых панелях (dialog box), что создает дружественность интерфейса. Управление объектами и возможность наблюдения за их состоянием (Object brower to interactively display filter type and select S-PLUS objects). Отображение предыдущих команд, сохраняемых в специальном файле (Command history window displays all commands, which can be selected, executed, edited or saved to a file). Поддержка DDE, позволяющая приложениям, разработанным под Visual Basic или Visual C++ использовать S-Plus, посылая команды на исполнение и получая результаты (DDE serve support allows applications to send commands to S-PLUS and receive results, e.g. Visual Basic or Visual C++ interface applications). Включает диалоговые панели (dialog boxes) для задания параметров функций S-PLUS в диалоговом режиме. Включает возможность настраивать (создавать новые) меню, диалоговые панели и органы управления, связанные с командами и функциями S-PLUS (customizable menus to generate S-PLUS commands, customizable dialog boxes and controls).
Библиотека timeslab , содержащая функции для построения АРСС (ARMA) моделей и анализа временных рядов. Используется интерфейс S с библиотеками Фортрана (судя по исходному тексту — IMSL, NAG, ACM Collection).
Библиотеки, содержащие функции на языке S и SPlus (S+)
Ниже приведен краткий список библиотек, содержащих функции на языке S и Splus, реализующие описанные методы, предлагаемые для решения задачи прогнозирования, а также несколько библиотек, позволяющих связывать текст на языке S с текстом, написанным на Фортране или C (C++) : class — библиотека подпрограмм для классификации fracdiff — подпрограммы вычисления параметров АРИСС-модели gmanova — подпрограммы дисперсионного анализа linreg — подпрограммы построения линейной регрессии mclust — подпрограммы кластерного анализа mda — подпрограммы дискриминантного анализа mmreg — подпрограммы построения множественной регрессии nnet — прогнозирование с использованием нейронных сетей nonlin — подпрограммы построения нелинейной регрессии pear — периодическая авторегрессия s.f77.c.libs — программный интерфейс с Фортраном и C safe.predict time.series — анализ временных рядов с использованием АРСС-моделей time.series.guide — руководство по анализу временных рядов timeslab — подпрограммы по анализу временных рядов с использованием текстов на Фортране
Пакеты
Примером совмещения возможностей S и дружественного пользовательского интерфейса, описываемого на языке LISP может служить пакет S-Mode (Emacs, упоминаются версии 4.8 и ниже).
Следует упомянуть о том факте, что в тексте, описывающем достоинства языка R, указывается ряд недостатков языка S и его программных реализаций (ошибки по памяти, не полная совместимость для различных платформ и пр.). Кроме того не ясна доступность программных оболочек и компиляторов, возможно, их стоимость — велика. (Указывается, что R распространяется свободно — standart GNU-style copyleft — в отличие от copyright).
Сопоставление SAS и S (программы для анализа и обработки данных)
В приведенных ниже статьях содержится сопоставление SAS и S — двух программных продуктов, занимающих лидирующие позиции на рынке программ для анализа и обработки данных. Оба продукта содержат собственные языки программирования и средства разработки. Автор указывает на то, что он использует оба средства, однако предпочтительнее для него S-Plus. Один из аргументов в пользу S-Plus — его более низкая стоимость.
Dr. Terry Therneau uses both S-PLUS and SAS to maximize his data analysis
Описание применений S-PLUS для решения финансовых задач
Sjo, Inc. uses S-PLUS to develop futures trading methodologies
Financial Modeling in S-PLUS
Market researchers seeking more from their data turn to S-PLUS
Дистрибуторы S-PLUS — Sales Department StatSci Europe https://web.archive.org/web/20100407211323/http://www.statsci.co.uk/
Источники информации в Internet
Core Math LIBrary — сборник статистических библиотек на Фортране, с исходными текстами снабженными комментариями, включающими описание методов.