Как вычислить изученные остатки для регрессии, сгруппированной по 2 характеристикам на Python? - PullRequest
1 голос
/ 04 апреля 2019

Я работаю над своей дипломной работой бакалавра, и мне нужно вычислить то, что называется эмпирическим показателем худобы. Для этого мне нужно получить проверенный остаток каждого наблюдения. Каждое наблюдение - это компания в конкретном году. Я провел регрессионный анализ путем регрессии натурального логарифма уровней запасов на натуральный логарифм доходов. Я также сгруппировал регрессию по отраслям (код SIC) и по валютам (USD или CAD). Теперь я должен найти стандартизированные невязки для каждого из этих наблюдений, которые содержатся в одном кадре данных (размер выборки 62739 и имеется 494 ​​различных регрессии), учитывая тот факт, что каждое наблюдение должно соответствовать регрессии для его SIC код и валюта.

Я пробовал так много кодов с разными идеями, но ни один не работал.

На данный момент это весь мой код (invt означает общий объем запасов, revt означает общий доход и conm означает название компании):

import numpy as np
import pandas as pd
import statsmodels.api as sm

df = pd.read_csv('Compustat data.csv')

df.dropna(inplace=True)

df = df.drop(df[df.invt == 0].index)
df = df.drop(df[df.revt <= 0].index)

df = df[df.duplicated('conm') | df.duplicated('conm', keep = 'last')]

df['invt'] = np.log(df['invt'])
df['revt'] = np.log(df['revt'])

def regress(df, invt, revt):
    Y = df[invt]
    X = df[revt]
    X['intercept'] = 1.
    result = sm.OLS(Y, X).fit()
    return result.params

df2 = df.groupby(['sic', 'curcd']).apply(regress, 'invt', ['revt'])
...