Я работаю над своей дипломной работой бакалавра, и мне нужно вычислить то, что называется эмпирическим показателем худобы. Для этого мне нужно получить проверенный остаток каждого наблюдения. Каждое наблюдение - это компания в конкретном году. Я провел регрессионный анализ путем регрессии натурального логарифма уровней запасов на натуральный логарифм доходов. Я также сгруппировал регрессию по отраслям (код 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'])