S (язык программирования)

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

S — язык программирования, разработанный фирмой AT&T Bell Labs (появился в середине 80-х годов), предназначен для обработки данных. Разработано несколько версий расширения языка S — S-Plus, для различных платформ (UNIX, SunOS, Windows).

В описании S-Plus [1] (см. также [2] ), приведенном S-Press [3], отмечается, что этот продукт содержит объектно-ориентированный язык программирования, что обеспечивает возможность контролировать состояние описанных на этом языке объектов в любой точке алгоритма. Причем объектами являются все наборы данных, функции и модели анализа. Это выгодно отличает данный продукт от специализированных программных пакетов. Вы больше не должны собирать команды и функции, помещать все это черный ящик и ждать итоговой распечатки. Преимущества нового подхода состоят в обеспечении контролируемости на каждом шаге вычислений, понятности операций и уверенности в результате. Отмечается, что из концепции S-Plus исключена генерация красивых, но жестко заданных отчетов (printouts).

Краткий обзор основных черт языка S-Plus[править | править исходный текст]

(S-PLUS Features at a Glance [4] ).

  • Имеется пользовательский интерфейс с системой меню, позволяющий осуществлять последовательность действий в диалоге с программой (Interactive analysis, with step-by-step feedback).
  • Имеется встроенный объектно-ориентированный язык, (Built-in, true object-oriented language).

Возможности языка[править | править исходный текст]

S-PLUS поддерживает:

  • Классы (объекты), механизм наследования, встроенные(?) функции и методы (generic functions, and methods).
  • Операции и функции для работы со скалярными величинами, векторами и массивами (scalars, vectors, arrays)
  • Структурный язык (structured language), включающий операторы for, while, next, repeat, break.
  • Логические операторы: >, >=, <, <=, ==, !=, &, if else, all, any.
  • Интеллектуальные операторы для работы с объектами (Sophisticated operators for assigning, extracting, replacing parts of objects).
  • Объект список, позволяющий создавать структурированные массивы разнородных объектов.
  • Функцию подстановки для цикла, обрабатывающего сходные объекты ("Merge" function for intregrating data sets).
  • Функции "By" и "Aggregate" (for analyzing specific variables for each of the various levels of another variable).

S-PLUS позволяет:

  • Создавать собственные процедуры обработки данных.
  • Корректировать (modify) любую из 1650 имеющихся функций.

Интерфейс с программами на языках C и FORTRAN[править | править исходный текст]

  • Можно использовать как интерфейс (front-end) для коммерческих библиотек (IMSL, NAG и т.д.)
  • Динамическая и статическая загрузка программ пользователя, написанных на C или ФОРТРАНе.
  • Динамическая загрузка DLL в Windows (Dynamic loading of Dynamic Link Libraries (DLLs) in Windows).

Интерфейс с операционной системой[править | править исходный текст]

  • Порождение процессов (Spawn subprocesses).
  • Доступ к редакторам, имеющимся в системе.
  • Обмен данными с операционной системой и другими приложениями (Pass data to/from operating system and other applications).

Ввод/Вывод[править | править исходный текст]

  • 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)
  • Проверка гипотез по критерию Стьюдента (Student's t-test)
  • Проверка гипотез по критерию хи-квадрат (Chi-square test)
  • Ранговый критерий Вилксона (Wilcoxon rank sum test)
  • Binomial test
  • Mantel-Haenszel test
  • Стандартные распределения плотности (Probability distributions)
  • Многофакторная (Multivariate) статистика и графика
  • Иерархическая кластеризация (Hierarchical clustering)
  • k-means clustering
  • 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 [5], содержащая функции для построения АРСС (ARMA) моделей и анализа временных рядов. Используется интерфейс S с библиотеками ФОРТРАНа (судя по исходному тексту — IMSL, NAG, ACM Collection).

Библиотеки, содержащие функции на языке S и SPlus (S+)[править | править исходный текст]

Ниже приведен краткий список библиотек, содержащих функции на языке S и Splus, реализующие описанные методы, предлагаемые для решения задачи прогнозирования, а также несколько библиотек, позволяющих связывать текст на языке S с текстом, написанным на ФОРТРАНе или С (С++) :

  • class — библиотека подпрограмм для классификации
  • fracdiff — подпрограммы вычисления параметров арисс-модели
  • gmanova — подпрограммы дисперсионного анализа
  • linreg — подпрограммы построения линейной регрессии
  • mclust — подпрограммы кластерного анализа
  • mda — подпрограммы дискриминантного анализа
  • mmreg — подпрограммы построения множественной регрессии
  • nnet — прогнозирование с использованием нейронных сетей
  • nonlin — подпрограммы построения нелинейной регрессии
  • pear — периодическая авторегрессия
  • s.f77.c.libs — программный интерфейс с Фортраном и С
  • 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 http://www.statsci.co.uk

Источники информации в Internet[править | править исходный текст]

  • Core Math LIBrary — сборник статистических библиотек на ФОРТРАНе, с исходными текстами снабженными комментариями, включающими описание методов.
  • Statlib содержит информацию, включая исходные коды с примерами данных (datasets and code). Указываются языки XLispStat, S, R, BLSS и др.
  • S-Plus, MathSoft Home Page содержит информацию по языкам программирования S и S-Plus.
  • Power Analysis software for PC-s обширный список программ, предназначенных для проверки статистических гипотез при анализе мощности. Обзор статистических пакетов и ссылок на соответствующие страницы.
  • Kovach Computing services содержит список сайтов по статистической обработке данных. Предоставляет консультации по пакетам SIMSTAT, MVSP, Oriana.
  • NetLib , http://risc1.numis.nwu.edu/ftp/pub/list-packages.HTMl
  • NPSTAT home содержит большой список современные методы для непараметрического контроля и других методов статистической обработки (statistics in general).

Примечания[править | править исходный текст]

См. также[править | править исходный текст]

R (язык программирования)