Я новичок в Python и пытаюсь решить очень простую модель CGE. Однако при попытке шокировать экономику это решение дает точно такие же результаты. Я сомневаюсь, стоит ли мне писать код по-другому, использовать другой оптимизатор или что-то в этом роде.
Вот мой класс в файле py:
import numpy as np
from scipy import optimize
from scipy.optimize import fsolve
class SimpleEquilibriumModel:
def __init__(self):
# Define objects and dimensions
self.Y = 0 # Output (Endogenous)
self.L = 0 # Labor (Endogenous)
self.C = 0 # Consumption (Endogenous)
self.W = 0 # Wage (Endogenous)
self.P = 0 # Price (Endogenous)
self.A = 0 # Technology (Exogenous)
self.N = 0 # Population (Exogenous)
# Define equations
def E_L():
return self.L == self.Y / self.A
def E_NP():
return self.P * self.Y == self.W * self.L
def E_W():
return self.L == self.N
def E_C():
return self.C == self.W / self.P * self.N
def E_P():
return self.P == 1
def E_A():
return self.A == self.W / self.P
self.equations = [E_L, E_NP, E_W, E_C, E_P, E_A]
# Define national accounts parameter
self.NR = 1000
def solve(self):
# Initialization and calibration
self.W = 1
self.P = 1
self.L = self.NR
self.Y = self.NR
self.N = self.L
self.A = self.W / self.P
# Solve the model
def model_equations(x):
self.W, self.P, self.L, self.Y, self.N, self.A = x
return [E() for E in self.equations]
self.W, self.P, self.L, self.Y, self.N, self.A = fsolve(model_equations, [1, 1, self.L, self.Y, self.N, self.A])
self.C = self.W / self.P * self.N
return self.Y, self.L, self.C, self.W, self.P
def solve_shock(self, shock_A = None):
# Initialization and calibration
self.W == 2
self.P == 2
self.L = self.NR
self.Y = self.NR
self.N = self.L
self.A = (self.W / self.P)*shock_A
# Solve the model
def model_equations(x):
self.W, self.P, self.L, self.Y, self.N, self.A = x
return [E() for E in self.equations]
self.W, self.P, self.L, self.Y, self.N, self.A = fsolve(model_equations, [1, 1, self.L, self.Y, self.N, self.A])
self.C = self.W / self.P * self.N
return self.Y, self.L, self.C, self.W, self.P
Это мой код в блокноте:
import numpy as np
from scipy import optimize
from . import SimpleEquilibriumModel
output, employment, consumption, wage, price = model.solve()
print("Equilibrium output:", output)
print("Equilibrium employment:", employment)
print("Equilibrium consumption:", consumption)
print("Equilibrium wage:", wage)
print("Equilibrium price:", price)
output, employment, consumption, wage, price = model.solve_shock(shock_A = 1.1)
print("New equilibrium output:", output)
print("New equilibrium employment:", employment)
print("New equilibrium consumption:", consumption)
print("New equilibrium wage:", wage)
print("New equilibrium price:", price)
доходность:
Equilibrium output: 1000.0000018014192
Equilibrium employment: 1000.0000056491614
Equilibrium consumption: 999.9999869002581
Equilibrium wage: 0.9999999925494194
Equilibrium price: 1.0000000149011612
New equilibrium output: 1000.0
New equilibrium employment: 1000.0000149011612
New equilibrium consumption: 999.9999701976781
New equilibrium wage: 0.9999999850988388
New equilibrium price: 1.0000000149011612
Подробнее здесь: https://stackoverflow.com/questions/762 ... -cge-model
Проблемы реализации шоков в очень простой модели CGE ⇐ Python
Программы на Python
-
Anonymous
1763334700
Anonymous
Я новичок в Python и пытаюсь решить очень простую модель CGE. Однако при попытке шокировать экономику это решение дает точно такие же результаты. Я сомневаюсь, стоит ли мне писать код по-другому, использовать другой оптимизатор или что-то в этом роде.
Вот мой класс в файле py:
import numpy as np
from scipy import optimize
from scipy.optimize import fsolve
class SimpleEquilibriumModel:
def __init__(self):
# Define objects and dimensions
self.Y = 0 # Output (Endogenous)
self.L = 0 # Labor (Endogenous)
self.C = 0 # Consumption (Endogenous)
self.W = 0 # Wage (Endogenous)
self.P = 0 # Price (Endogenous)
self.A = 0 # Technology (Exogenous)
self.N = 0 # Population (Exogenous)
# Define equations
def E_L():
return self.L == self.Y / self.A
def E_NP():
return self.P * self.Y == self.W * self.L
def E_W():
return self.L == self.N
def E_C():
return self.C == self.W / self.P * self.N
def E_P():
return self.P == 1
def E_A():
return self.A == self.W / self.P
self.equations = [E_L, E_NP, E_W, E_C, E_P, E_A]
# Define national accounts parameter
self.NR = 1000
def solve(self):
# Initialization and calibration
self.W = 1
self.P = 1
self.L = self.NR
self.Y = self.NR
self.N = self.L
self.A = self.W / self.P
# Solve the model
def model_equations(x):
self.W, self.P, self.L, self.Y, self.N, self.A = x
return [E() for E in self.equations]
self.W, self.P, self.L, self.Y, self.N, self.A = fsolve(model_equations, [1, 1, self.L, self.Y, self.N, self.A])
self.C = self.W / self.P * self.N
return self.Y, self.L, self.C, self.W, self.P
def solve_shock(self, shock_A = None):
# Initialization and calibration
self.W == 2
self.P == 2
self.L = self.NR
self.Y = self.NR
self.N = self.L
self.A = (self.W / self.P)*shock_A
# Solve the model
def model_equations(x):
self.W, self.P, self.L, self.Y, self.N, self.A = x
return [E() for E in self.equations]
self.W, self.P, self.L, self.Y, self.N, self.A = fsolve(model_equations, [1, 1, self.L, self.Y, self.N, self.A])
self.C = self.W / self.P * self.N
return self.Y, self.L, self.C, self.W, self.P
Это мой код в блокноте:
import numpy as np
from scipy import optimize
from . import SimpleEquilibriumModel
output, employment, consumption, wage, price = model.solve()
print("Equilibrium output:", output)
print("Equilibrium employment:", employment)
print("Equilibrium consumption:", consumption)
print("Equilibrium wage:", wage)
print("Equilibrium price:", price)
output, employment, consumption, wage, price = model.solve_shock(shock_A = 1.1)
print("New equilibrium output:", output)
print("New equilibrium employment:", employment)
print("New equilibrium consumption:", consumption)
print("New equilibrium wage:", wage)
print("New equilibrium price:", price)
доходность:
Equilibrium output: 1000.0000018014192
Equilibrium employment: 1000.0000056491614
Equilibrium consumption: 999.9999869002581
Equilibrium wage: 0.9999999925494194
Equilibrium price: 1.0000000149011612
New equilibrium output: 1000.0
New equilibrium employment: 1000.0000149011612
New equilibrium consumption: 999.9999701976781
New equilibrium wage: 0.9999999850988388
New equilibrium price: 1.0000000149011612
Подробнее здесь: [url]https://stackoverflow.com/questions/76234746/issues-implementing-shocks-to-a-very-simple-cge-model[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия