Economic Disparity/Experiments: различия между версиями

Материал из Поле цифровой дидактики
Нет описания правки
 
Строка 1: Строка 1:
# План эксперимента в NetLogo BehaviourSpace над моделью «Экономическое неравенство»
# План эксперимента в NetLogo BehaviourSpace над моделью «Экономическое неравенство»
{| class="wikitable" style="width:100%;"
! Шаг
! Описание
! Значения / параметры
|-
| 1. Подготовка модели
| Открыть модель Economic Disparity в NetLogo. Проверить наличие и правильность настройки слоев для сбора переменных price_observed и quality.
| -
|-
| 2. Настройка BehaviourSpace
| Запустить BehaviourSpace из меню Tools → BehaviourSpace. Создать новый эксперимент.
| Имя эксперимента: EconomicDisparity_Experiment
|-
| 3. Определение параметров для варьирования (факторов)
| Выбрать параметры, которые будут изменяться в процессе эксперимента, с примерами значений для каждого.
| {|
|+ Входные параметры эксперимента
|-
! Параметр
! Значения
|-
| max-jobs
| 5, 10, 15
|-
| poor-price-priority
| -1, 0, 1
|-
| rich-quality-priority
| -1, 0, 1
|-
| death-rate
| 2, 4, 6
|-
| poor-per-step
| 1, 5, 10
|-
| rich-per-step
| 1, 5, 10
|-
| residents-per-job
| 50, 100, 150
|-
| number-of-tests
| 5, 15, 30
|}
|-
| 4. Определение команды Setup
| Команда, которая инициализирует модель перед запуском
| setup
|-
| 5. Определение команды Go
| Команда, запускающая один цикл модели
| go
|-
| 6. Условие остановки эксперимента
| Останавливать симуляцию через определённое количество тактов (ticks)
| ticks >= 200
|-
| 7. Выбор метрик для сбора и сохранения
| Какие переменные нужно сохранять в CSV для дальнейшего анализа
| mean [price] of patches (сохраняется как price_observed); mean [quality] of patches (сохраняется как quality)
|-
| 8. Периодичность записи данных
| Частота записи данных в CSV-файл (например, после каждого 20-го такта)
| every 20 ticks
|-
| 9. Количество повторов (runs)
| Количество повторений эксперимента для статистической значимости
| не менее 30
|-
| 10. Сохранение результатов
| Оптимальный формат файла и путь сохранения для интеграции с R-скриптом
| CSV с разделителем ";" включая параметры эксперимента
|-
| 11. Обработка данных после выгрузки
| Удалить первые 6 строк с описанием и оставить только ключевые переменные для анализа (например, price_observed и quality)
| Выполняется отдельно в R
|-
| 12. Подключение к дальнейшему анализу
| Использовать полученный CSV в R-скрипте, где проводится регрессионный анализ и построение графиков
| "(См. соответствующий R-скрипт для анализа в Wiki)"
|}
Этот план продуман так, чтобы охватить все этапы: от подготовки модели до получения чистого набора данных для последующего эконометрического анализа в R. Метрики и параметры выбраны из исходного списка, сгруппированы для удобства проведения повторных экспериментов и сравнений.
[1](https://ccl.northwestern.edu/netlogo/models/UrbanSuite-EconomicDisparity)
[2](https://ccl.northwestern.edu/netlogo/2.0.0/docs/behaviorspace.html)
[3](https://www.youtube.com/watch?v=amD-pyNAqrc)
[4](https://docs.netlogo.org/behaviorspace.html)
[5](https://www.yildizoglu.fr/cef-2015/NetLogo-cef-2015-chapter-2-netlogo-ho.pdf)
[6](https://webspace.science.uu.nl/~vrees101/tips/empirical.php)
[7](https://www.youtube.com/watch?v=LJLzuyyVm04)
[8](https://ccl.northwestern.edu/netlogo/bind/watch/modelslibrary.html)


Цель эксперимента — собрать данные по взаимосвязи между наблюдаемыми ценами земельных участков и их качеством в разных сценариях при переселении агентов.
Цель эксперимента — собрать данные по взаимосвязи между наблюдаемыми ценами земельных участков и их качеством в разных сценариях при переселении агентов.

Текущая версия от 08:55, 20 сентября 2025

  1. План эксперимента в NetLogo BehaviourSpace над моделью «Экономическое неравенство»
Шаг Описание Значения / параметры
1. Подготовка модели Открыть модель Economic Disparity в NetLogo. Проверить наличие и правильность настройки слоев для сбора переменных price_observed и quality. -
2. Настройка BehaviourSpace Запустить BehaviourSpace из меню Tools → BehaviourSpace. Создать новый эксперимент. Имя эксперимента: EconomicDisparity_Experiment
3. Определение параметров для варьирования (факторов) Выбрать параметры, которые будут изменяться в процессе эксперимента, с примерами значений для каждого.
Входные параметры эксперимента
Параметр Значения
max-jobs 5, 10, 15
poor-price-priority -1, 0, 1
rich-quality-priority -1, 0, 1
death-rate 2, 4, 6
poor-per-step 1, 5, 10
rich-per-step 1, 5, 10
residents-per-job 50, 100, 150
number-of-tests 5, 15, 30

|- | 4. Определение команды Setup | Команда, которая инициализирует модель перед запуском | setup |- | 5. Определение команды Go | Команда, запускающая один цикл модели | go |- | 6. Условие остановки эксперимента | Останавливать симуляцию через определённое количество тактов (ticks) | ticks >= 200 |- | 7. Выбор метрик для сбора и сохранения | Какие переменные нужно сохранять в CSV для дальнейшего анализа | mean [price] of patches (сохраняется как price_observed); mean [quality] of patches (сохраняется как quality) |- | 8. Периодичность записи данных | Частота записи данных в CSV-файл (например, после каждого 20-го такта) | every 20 ticks |- | 9. Количество повторов (runs) | Количество повторений эксперимента для статистической значимости | не менее 30 |- | 10. Сохранение результатов | Оптимальный формат файла и путь сохранения для интеграции с R-скриптом | CSV с разделителем ";" включая параметры эксперимента |- | 11. Обработка данных после выгрузки | Удалить первые 6 строк с описанием и оставить только ключевые переменные для анализа (например, price_observed и quality) | Выполняется отдельно в R |- | 12. Подключение к дальнейшему анализу | Использовать полученный CSV в R-скрипте, где проводится регрессионный анализ и построение графиков | "(См. соответствующий R-скрипт для анализа в Wiki)" |}

Этот план продуман так, чтобы охватить все этапы: от подготовки модели до получения чистого набора данных для последующего эконометрического анализа в R. Метрики и параметры выбраны из исходного списка, сгруппированы для удобства проведения повторных экспериментов и сравнений.

[1](https://ccl.northwestern.edu/netlogo/models/UrbanSuite-EconomicDisparity) [2](https://ccl.northwestern.edu/netlogo/2.0.0/docs/behaviorspace.html) [3](https://www.youtube.com/watch?v=amD-pyNAqrc) [4](https://docs.netlogo.org/behaviorspace.html) [5](https://www.yildizoglu.fr/cef-2015/NetLogo-cef-2015-chapter-2-netlogo-ho.pdf) [6](https://webspace.science.uu.nl/~vrees101/tips/empirical.php) [7](https://www.youtube.com/watch?v=LJLzuyyVm04) [8](https://ccl.northwestern.edu/netlogo/bind/watch/modelslibrary.html)

Цель эксперимента — собрать данные по взаимосвязи между наблюдаемыми ценами земельных участков и их качеством в разных сценариях при переселении агентов.

1. Подготовка модели

    ```
  - Входные параметры (factors):  
    -  `POOR-PER-STEP`: 1, 5, 10  
    -  `RICH-PER-STEP`: 1, 5, 10  
    -  `NUMBER-OF-TESTS`: 5, 20, 50  
  - **Метрики для сбора (metrics):**  
    -  `mean [price] of patches` → сохраняется как `price_observed`  
    -  `mean [quality] of patches` → сохраняется как `quality`  
  - **Номер запуска (run count):** 30  
  - **Интервал записи:** каждый 20 ticks (всего 10 точек на запуск)  
  - **Формат выходного файла:** CSV, с сохранением всех колонок:  
    ```
    run_number;poor-per-step;rich-per-step;number-of-tests;tick;price_observed;quality
    ```

Проведение эксперимента

  - Запустить BehaviourSpace, дождаться окончания.  
  - Полученный файл `LandPriceQuality.csv` содержит примерно  
    ```
    run_number;poor-per-step;rich-per-step;number-of-tests;tick;price_observed;quality
    1;1;1;5;0;1.00;1.00
    1;1;1;5;20;1.05;1.05
    … 
    30;10;10;50;200;2.30;2.30
    ```

R-скрипт для анализа данных

# Загрузка библиотек
library(readr)
library(ggplot2)
library(dplyr)
library(lmtest)

# Чтение данных, пропуская первые 6 строк с описанием
land_data_raw <- read.csv("LandPriceQuality.csv",
                          sep = ";",
                          skip = 6,
                          header = TRUE,
                          stringsAsFactors = FALSE)

# Оставляем только нужные переменные
land_data <- land_data_raw %>%
  select(price_observed, quality)

# Предварительный просмотр
head(land_data)
#   price_observed quality
# 1           1.00    1.00
# 2           1.05    1.05
# ...

# 1. Оценка линейной регрессии
model <- lm(price_observed ~ quality, data = land_data)
summary(model)

# 2. Тест Бройша–Пагана на гетероскедастичность
bptest(model)

# 3. Визуализация зависимости
ggplot(land_data, aes(x = quality, y = price_observed)) +
  geom_point(alpha = 0.4) +
  geom_smooth(method = "lm", color = "blue", se = FALSE) +
  labs(
    title = "Зависимость наблюдаемой цены от качества участка",
    x = "Качество участка",
    y = "Наблюдаемая цена"
  )

# 4. Сохранение итогового набора данных для дальнейшего анализа
write.csv(land_data, "LandPriceQuality_clean.csv", row.names = FALSE)

# Оценка простой линейной регрессии price_observed ~ quality
model <- lm(price_observed ~ quality, data = land_data)
summary(model)

# Проверка гетероскедастичности (тест Бройша–Пагана)
library(lmtest)
bptest(model)

# Визуализация зависимости
ggplot(land_data, aes(x = quality, y = price_observed)) +
  geom_point(alpha = 0.3) +
  geom_smooth(method = "lm", color = "blue") +
  facet_grid(poor.per.step ~ rich.per.step) +
  labs(
    title = "Зависимость наблюдаемой цены от качества участка",
    x = "Качество участка",
    y = "Наблюдаемая цена"
  )

# Сохранение объединённой таблицы сводных статистик
summary_table <- land_data %>%
  group_by(poor.per.step, rich.per.step, number.of.tests) %>%
  summarize(
    mean_price = mean(price_observed),
    sd_price = sd(price_observed),
    mean_quality = mean(quality),
    sd_quality = sd(quality),
    .groups = "drop"
  )
write.csv(summary_table, "LandPriceQuality_summary.csv", row.names = FALSE)

# Результаты регрессии по подгруппам
group_models <- land_data %>%
  group_by(poor.per.step, rich.per.step, number.of.tests) %>%
  nest() %>%
  mutate(
    fit = map(data, ~ lm(price_observed ~ quality, data = .x)),
    tidied = map(fit, tidy)
  ) %>%
  unnest(tidied) %>%
  select(poor.per.step, rich.per.step, number.of.tests, term, estimate, p.value)
write.csv(group_models, "LandPriceQuality_group_regression.csv", row.names = FALSE)

Структура итоговой CSV-таблицы

```csv run_number;poor-per-step;rich-per-step;number-of-tests;tick;price_observed;quality 1;1;1;5;0;1.00;1.00 1;1;1;5;20;1.05;1.05 ... 30;10;10;50;200;2.30;2.30 ```

Эту таблицу можно загрузить в R как `land_data` и применять к ней приведённый скрипт для оценки регрессий, тестов гетероскедастичности и построения визуализаций.