S (язык программирования)
S | |
---|---|
Класс языка | язык программирования и векторный язык программирования[вд] |
Появился в | 1976 |
Разработчик | Рик Бекер[вд] |
Выпуск |
|
Испытал влияние | Си |
Повлиял на | R |
Сайт | ect.bell-labs.com/sl/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] ).
- Имеется пользовательский интерфейс с системой меню, позволяющий осуществлять последовательность действий в диалоге с программой.
- Имеется встроенный объектно-ориентированный язык.
Возможности языка
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 [5], содержащая функции для построения АРСС (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 — сборник статистических библиотек на Фортране, с исходными текстами снабженными комментариями, включающими описание методов.
- 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 , https://web.archive.org/web/20000916005332/http://risc1.numis.nwu.edu/ftp/pub/list-packages.html
- NPSTAT home содержит большой список современные методы для непараметрического контроля и других методов статистической обработки (statistics in general).
Примечания
- ↑ https://web.archive.org/web/20170929183943fw_/http://ect.bell-labs.com/sl/S/history.html
См. также
- R (язык программирования)
- D (язык программирования)
- Планкалкюль (первый язык высокого уровня)
- E (язык программирования)
- Java (язык программирования)