Economic Disparity/Experiments: различия между версиями
Материал из Поле цифровой дидактики
Patarakin (обсуждение | вклад) Нет описания правки |
Patarakin (обсуждение | вклад) |
||
| Строка 33: | Строка 33: | ||
=== R-скрипт для анализа данных === | === R-скрипт для анализа данных === | ||
<syntaxhighlight lang="r" line> | <syntaxhighlight lang="r" line> | ||
# Загрузка библиотек | |||
# Загрузка | library(readr) | ||
library(ggplot2) | library(ggplot2) | ||
library(dplyr) | library(dplyr) | ||
library( | 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) | 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 | # Оценка простой линейной регрессии price_observed ~ quality | ||
Версия от 08:21, 20 сентября 2025
- План эксперимента в 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
```
Проведение эксперимента
- Запустить 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` и применять к ней приведённый скрипт для оценки регрессий, тестов гетероскедастичности и построения визуализаций.
