Economic Disparity/Experiments

Материал из Поле цифровой дидактики
Версия от 08:14, 20 сентября 2025; Patarakin (обсуждение | вклад) (Новая страница: «# План эксперимента в NetLogo BehaviourSpace над моделью «Экономическое неравенство» Цель эксперимента — собрать данные по взаимосвязи между наблюдаемыми ценами земельных участков и их качеством в разных сценариях при переселении агентов. 1. Подготовка модел...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
  1. План эксперимента в NetLogo BehaviourSpace над моделью «Экономическое неравенство»

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

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
    ```

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

  - Запустить 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
    ```
  1. R-скрипт для анализа данных
`.

# Загрузка пакетов
library(ggplot2)
library(dplyr)
library(tidyr)
library(broom)

# Чтение данных
land_data <- read.csv("LandPriceQuality.csv", sep=";")

# Предварительный просмотр
head(land_data)
# run_number poor.per.step rich.per.step number.of.tests tick price_observed quality

# Оценка простой линейной регрессии 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` и применять к ней приведённый скрипт для оценки регрессий, тестов гетероскедастичности и построения визуализаций.