1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/macro-lisp-stat

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
第一章 简介.md 35 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 16.03.2025 19:56 7f2179d

Глава 1 Введение

1.1 Статистическая вычислительная среда

Ранее, статистическое моделирование сосредоточилось в основном на численных расчетах. Те времена компьютеры были медленными, поэтому чтобы получить приемлемую производительность, программистам приходилось внимательно писать программы на относительно низком уровне. В результате большинство ранних статистических систем были простыми терминалами вместо строгочисленных алгоритмов. Люди, использующие эти системы, должны были представлять свои статистические запросы, а затем получать результаты ближе к концу дня или на следующий день.

С развитием быстродействия и доступности компьютеров стало возможным выполнять вычисления, которые ранее занимали несколько часов или даже дней, всего за несколько минут или секунд. Это развитие создало новые вызовы для статистического программного обеспечения. Поскольку современные аппаратные средства могут быстро выполнять различные вычислительные задачи, поддерживающая статистическая среда должна делать простым выполнение таких шагов как отображение различных результатов на экране, передачу результатов вычислений с одного компьютера на другой, проверку результатов и отслеживание процесса вычислений.

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

Другим важным направлением развития стало повышение вычислительной мощности. Все больше статистических вычислений выполняется на высокопроизводительных персональных компьютерах и рабочих станциях. Такое оборудование открывает множество новых возможностей. Одним из самых интересных направлений статистики является область динамического компьютерного графика и его применения в статистике. Графические методы долгое время являлись важным инструментом в статистике. Однако одним из ограничений традиционного двухмерного графика является то, что он не может легко представлять информацию более чем в двух измерениях. Современные компьютерные мониторы позволяют отображать последовательность быстро меняющихся двухмерных графиков, что открывает третью ось — временную ось.

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

Многие идеи по поводу динамического графического отображения были предложены в последние годы [20].

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

Недавний опыт показывает, что новый парадигмальный подход к программированию — объектно-ориентированное программирование — очень полезен для общего графического программирования, особенно для статистического графического программирования. Объектно-ориентированные методы имеют множество других приложений в статистических системах. Например, можно разрабатывать гибкие структуры данных для представления статистических моделей и т. д.

Графическое программирование и объектно-ориентированное программирование являются всего лишь двумя из многих характеристик современной статистической среды. Другими характеристиками могут быть способность обрабатывать «нестандартные» статистические данные, такие как списки или коллекции чисел. Большая часть данных может быть представлена таким образом. В контексте линейной модели различные модели также могут быть представлены через коллекцию чисел (коэффициенты модели и матрица прогнозов). Однако, когда более широкий класс таких моделей признается, становится сложно найти числовое представление для разных моделей. Например, система, предназначенная для построения непараметрических регрессионных моделей, которая требует непараметрической функции среднего значения, выбранной из некоторого набора данных, будет существенно ограничена.

В этом случае важно иметь возможность указывать функцию среднего значения более общим образом, либо как вычисляемую функцию от различных значений параметров, либо как выражение. Как только язык позволяет использовать такой тип нечисловых данных, открываются новые возможности. Например, программа может проверять модели и вычисления как производные средства, или пытаться установить структуру для упрощения вычислений и интерпретации, что делает возможными подобные вещи. ## 1.2 Среда Lisp-Stat ##

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

Первый подход заключается в создании нового высокопроизводительного языка с нуля, что было реализовано системами S (например, язык S и R). Второй метод состоит в использовании существующего языка для статистических вычислений; наиболее часто рекомендованным является язык Lisp.

Lisp-Stat представляет собой попытку создания полной статистической среды, основанной на языке Lisp. Он состоит из трёх частей:

  • Система Lisp со внесёнными изменениями в стандартные функции Lisp для поддержки структур данных типа вектор, а также дополнительными функциями для базовых статистических вычислений.
  • Интерфейс к операционной системе для визуализации.
  • Инструменты для создания графиков, особенно для динамического отображения графиков, которые находятся внутри системы визуализации.

Lisp-Stat также включает объектно-ориентированную систему программирования, которая поддерживает программирование графиков и демонстрацию статистических моделей, таких как линейные и нелинейные модели регрессии.Lisp-Stat не является отдельной системой или реализацией. Наоборот, это спецификация набора базовых компонентов, которые могут быть объединены с помощью варианта системы Lisp и операционной системы для визуализации. На момент написания этой книги уже существует реализация Lisp-Stat под названием XLISP-STAT (примечание: "реализация" здесь относится к конкретному воплощению спецификации/стандарта). Эта система основана на диалекте Lisp — XLISP, и может работать на Macintosh и X11 операционной системе для визуализации. Со временем могут появиться и другие реализации. Разработка версий XLISP-STAT для других операционных систем ведется в настоящее время. Также ведется разработка Common Lisp версии Lisp-Stat.

1.2.1 Почему выбрать Lisp

Lisp — это мощный универсальный язык программирования, идеально подходящий для взаимодействия и экспериментов. Он позволяет использовать функции как данные и поддерживает несколько парадигм программирования, включая объектно-ориентированный подход. Это привело к тому, что мы используем Lisp как инструмент для обучения основам программирования в курсах компьютерных наук, а также к тому, что некоторые исследователи используют и рекомендуют Lisp как идеальную среду для статистических вычислений.На самом деле, Lisp — один из самых старых языков программирования, который всё ещё используется. Он второй по старшинству после FORTRAN. За многие годы развития Lisp появились различные диалекты, но начиная с начала 1980-х годов сообщество Lisp начало объединяться вокруг использования единственного диалекта — Common Lisp. Сейчас доступно множество отличных систем Common Lisp, и код, генерируемый компиляторами Common Lisp, достиг скорости, сравнимой с C и FORTRAN. Система Lisp-Stat использует подход, основанный на диалектах общего языка Lisp или его разумных ветвях.

В данной книге представлены все сведения о языке Lisp. Самое важное содержится в главах 3 и 4. Однако многие другие характеристики языка Lisp не рассматриваются или упоминаются лишь вскользь. Для более глубокого погружения в язык Lisp существует множество отличных книг. Определение языка Common Lisp дано Steele'ом [см. источник 56]. Полностью завершенная документация по функциям Common Lisp представлена в [см. источник 31]. Два хороших руководства по Common Lisp — это Horn [см. источник 67] и Tater [см. источник 59]. (Примечание: В этих источниках следует обратиться к английскому оригиналу.)

Кроме того, были предложены некоторые другие языки как база для статистической среды. Одним из таких языков, который привлёк значительное внимание, является APL. Язык APL имеет много полезных особенностей, включая возможность работы с большими матрицами и массивами. Однако он не предоставляет удобства работы с высшими уровнями данных, такими как функции и выражения, а также не обеспечивает простоту реализации объектно-ориентированного программирования, что важно при работе с графикой. Включение этих возможностей в APL значительно сложнее, чем добавление функций работы с матрицами и массивами в Lisp.

1.2.2 Использование Lisp-Stat

Система Lisp-Stat может использоваться на различных уровнях, от базового статистического калькулятора и графического средства до создания статистических GUI для платформы. Организация книги проходит через эти уровни (от простого к сложному).

Вторая глава описывает использование Lisp-Stat как статистического калькулятора и графического средства. На этом уровне можно выполнять множество операций с помощью Lisp-Stat. Вы можете вводить данные, вычислять сводные статистики, создавать статические и динамические графики, моделировать регрессии и т.д. Команды для выполнения этих статистических вычислений следующие:

(mean precipitation)

или таким образом:

(standard-deviation precipitation)

Для вычисления среднего значения и стандартного отклонения набора данных precipitation. Эти выражения являются именно выражениями на языке Lisp. Но это не значит, что вам нужно знать много синтаксиса Lisp перед тем, как начать использовать Lisp-Stat. Учеба нескольких базовых команд позволяет вам анализировать данные уже через несколько минут.

Однако существуют преимущества от того факта, что команды Lisp-Stat являются выражениями на языке Lisp. Хотя вам не обязательно знать Lisp для использования Lisp-Stat, всё же стоит иметь некоторое понимание базовых концепций языка Lisp.

Мы уже изучили, как вычислять среднее значение и стандартное отклонение, теперь нам следует сделать небольшой шаг вперед и использовать Lisp-выражения для вычисления нормированной переменной:

> (/ (- precipitation (mean precipitation))
    (standard-deviation precipitation))
```Если вы заметите, что часто нормируете одну и ту же переменную, то стоит сделать ещё один шаг — заключить этот процесс в функцию и определить её следующим образом:

```markdown
> (defun нормировать (x)
    (/ (- осадки (среднее значение осадков))
        (стандартное отклонение осадков)))

Переход от использования Lisp-Stat как калькулятора до написания своих собственных функций для кастомизации системы является естественным шагом, который будет подробно рассмотрен в последнем разделе второй главы.

Инструменты, описанные во второй главе, уже достаточно мощны. Однако помимо объединения некоторых операций в новую функцию, можно сделать гораздо больше. Используя язык программирования Lisp, можно реализовать новые алгоритмы, а также создать функции для новых типов моделей. Чтобы полностью воспользоваться этой возможностью, вам потребуется изучить базовые конструкции управления и функции, предоставляемые Lisp и Lisp-Stat. Третья глава представляет собой описание этих конструкций управления, таких как условные конструкции, а также описывает некоторые распространённые стили программирования в Lisp. Четвертая глава демонстрирует дополнительные стандартные функции Lisp, пятая — описывает статистические функции, содержащиеся в Lisp-Stat.Система объектно-ориентированного программирования позволяет реализовать графический интерфейс и модели регрессии в Lisp-Stat. Вторая глава даёт простое введение в использование объектов, шестая — более подробное представление системы объектов Lisp-Stat и идеологии, лежащей за этой парадигмой. Седьмая глава описывает, как система объектов Lisp-Stat служит основой для его визуализационной системы. Кроме того, эта система обеспечивает доступ к GUI-инструментам (меню, диалоговым окнам) из Lisp-Stat. Графическая система состоит из двух дополнительных слоёв, построенных поверх системы визуализации. Первый слой описан в восьмой главе, второй — показан в девятой, вместе с поддержкой данных для графики и стандартных методов взаимодействия.Графическая система Lisp-Stat может использоваться различными способами. Простая анимация может быть легко создана даже с помощью инструментов, представленных во второй главе, например, нормальной вероятностной диаграммы, управляемой ползунком, который может интерактивно менять параметры модели конвертации энергии. Объекты меню и диалоговых окон, описанные в седьмой главе, могут быть использованы для создания графического интерфейса для набора функций или инструментов моделирования. ### 8. 9. 10 Объекты и идеи, представленные в главах 8 и 9, могут использоваться для создания кастомизированной графики в качестве вспомогательного средства либо для полной разработки новых типов графиков. Глава 10 демонстрирует несколько примеров возможностей.

Использование хорошей стратегии при работе с Lisp-Stat — это попробовать некоторые выражения с помощью интерактивного ввода через клавиатуру. Как только вы научитесь различать наборы выражений или операций и естественно объединять их вместе, вы можете определить новый функционал или новый тип объекта, который будет использовать эти выражения или операции. В будущих разработках этот новый функционал или объект может быть использован как базовый компонент. Такой подход является очень эффективным, независимо от того, исследуете ли вы новый объект данных, новую численную технику или новое вдохновение для графического представления. Через последовательность шагов исследования и упаковки таких способностей, одной из ключевых особенностей мощности интерактивной среды для статистических расчетов, такой как Lisp-Stat, является возможность поэтапного развития.

### 1. 2. 3 Некоторые вопросы дизайна и переносимости

Общие цели при проектировании системы Lisp-Stat были направлены на создание системы, которая могла бы использоваться интерактивно на многих операционных системах. Для достижения этой цели требовалось принимать некоторые решения и делать компромиссы в области дизайна.

Переменные пользовательского интерфейса

При проектировании системы отображения графики, которая должна работать на различных компьютерах, важным вопросом является различие в дизайне пользовательского интерфейса. Например, пользовательский интерфейс Macintosh обычно располагает меню в верхней панели меню, тогда как многие другие интерфейсы показывают меню при щелчке мыши внутри окна. Чтобы решить эту проблему, я старался спроектировать систему отображения графики Lisp-Stat в соответствии с общими соглашениями, оставив детали интерфейса для конкретной реализации. Например, система отображения графики Lisp-Stat рекомендует каждому графическому объекту иметь меню для удобства управления. Все реализации затем отличаются друг от друга относительно этих меню внутри Lisp-Stat. Каждая конкретная реализация отвечает за свои собственные детали, такие как моменты времени, когда меню будут показываться пользователю. На Macintosh, если окно статистической графики находится в переднем положении, меню могут быть расположены в панели меню. Для других систем, меню могут появиться при щелчке определённой кнопки мыши внутри окна статистической графики.

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

Переменные операционной системы

Когда Lisp-Stat нуждается в взаимодействии с операционной системой, различия между операционными системами приводят к различиям в переменных, используемых для работы Lisp-Stat. Эти различия возникают при запуске Lisp-Stat и при получении файлов. Каждый выпуск Lisp-Stat должен содержать информацию о том, как запустить Lisp-Stat через операционную систему, а также правила названий путей к папкам. В некоторых операционных системах возможно вызывать команды других операционных систем через внутренний код Lisp-Stat или код на других языках, связанных с системой Lisp-Stat. Подробности зависят от конкретной операционной системы.

##### Различные системы Lisp #####

Идеальной базовой системой Lisp-Stat является система Common Lisp. Недостатком является то, что системы Common Lisp могут быть дорогими. Некоторые системы Common Lisp работают плохо на микрокомпьютерах и рабочих станциях с ограниченным объёмом доступной памяти. Подмножество Common Lisp, предоставляемое XLISP, достаточно для поддержки одной системы Lisp-Stat. Основные характеристики Common Lisp, которых нет в XLISP, — это компилятор. Поскольку XLISP бесплатно доступен, мы можем создать бесплатную версию Lisp-Stat, основанную на XLISP.

##### Модели аппаратуры #####

Как и модель пользовательского интерфейса, модель аппаратуры, используемая для проектирования Lisp-Stat, основана на максимальном использовании общих характеристик.

Эта модель предполагает наличие битовой панели и устройства указания на каждом компьютере. Модель не требует наличия аппаратуры, предназначенной для специальных целей, таких как поддержка глубинного восприятия или двойного буферинга. Реализация Lisp-Stat может использовать двойное буферирование без изменения способа восприятия аппаратуры Lisp-Stat, но некоторые изменения могут потребовать использования аппаратуры глубинного восприятия. Насколько эти изменения будут полезными, остаётся вопросом.

1. 2. 4 Перспективы развития Lisp-Stat

Lisp-Stat представляет собой постоянно развивающуюся систему. Её цель — обеспечить среду для статистических вычислений, которая будет максимально использовать вычислительную мощность и графическую производительность современной аппаратуры. Это можно достичь следующими способами:

  1. Предоставление набора полезных средств программирования для выполнения численных статистических вычислений;
  2. Предоставление фреймворка для работы с более сложными данными (например, функциями и выражениями);
  3. Предоставление набора полезных компонентов для адаптации к созданию и развитию методов динамического построения графиков.

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

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/macro-lisp-stat.git
git@api.gitlife.ru:oschina-mirror/macro-lisp-stat.git
oschina-mirror
macro-lisp-stat
macro-lisp-stat
master