Попытка создать фрейм данных из другого фрейма данных с определенными ограничениями - PullRequest
0 голосов
/ 13 марта 2019

Я пытаюсь написать модель VAR на Python (где нельзя использовать готовые функции, такие как VAR в statsmodel).

Для этого мне нужна матрица зависимых переменных.У меня есть набор данных из 3 государственных облигаций с разными сроками погашения.Данные импортируются и обрабатываются следующим образом

# importing file
df = pd.read_csv("C://Users/raymond/Desktop/Econometrie3/us_tbills_8019.csv")

# dropping years > 1999
df = df.iloc[:240]

# calculating log differences
Dates = pd.to_datetime(df['DATE'], format='%Y-%m-%d')
mData = df[['GS10','GS5','GS1']]
mData.index = pd.DatetimeIndex(Dates)
AllData = mData
logdif = np.log(mData).diff().shift(1).dropna()

Чтобы создать матрицу Y, которая является матрицей зависимых переменных, я хочу принять значения logdif с диапазоном i = 1:K и j = P + 1: T-1

Я попытался создать свою матрицу следующим образом:

# variables
K = 3
T = df.shape[0]
P = 4

# matrix of Dependent Variable
Y = logdif
def functionY():
    for i in range(1, 3, 1):
        for j in range(P+1, T-1, 1):
            Y[i][j-1] = logdif[i][j]
        return Y

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

1 Ответ

0 голосов
/ 13 марта 2019

Я не могу понять весь ваш код (поэтому могут возникнуть другие проблемы), но я замечаю, что вы присваиваете свой фрейм данных logdif второй переменной Y, а затем записываете значения в Y.Вы должны знать, что это изменяет logdif, так как оно присваивается только по ссылке.(Это не похоже на то, что вы хотите, поскольку вы одновременно читаете с logdif.)

Используйте Y = logdif.copy(), чтобы избежать этого.

Редактировать: Также,range(1,3,1) идентичен range(1,3).

Редактировать: Кроме того, вы упоминаете, что вы пытаетесь создать матрица ;переменная, которую вы используете сейчас, все еще является DataFrame (np.log сохраняет тип аргумента здесь).Вы можете использовать Y = np.matrix(logdif), чтобы изменить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...