我想探索在pandas(或其他接受数据帧/系列友好的库)中高效执行扩展OLS的解决方案。你知道吗
pandas.stats.ols.MovingOLS
,因为它已被否决expanding_mean
。你知道吗例如,有一个数据帧df
,有两列X
和y
。为了更简单,我们来计算beta。
现在,我在想
import numpy as np
import pandas as pd
import statsmodel.api as sm
def my_OLS_func(df, y_name, X_name):
y = df[y_name]
X = df[X_name]
X = sm.add_constatn(X)
b = np.linalg.pinv(X.T.dot(X)).dot(X.T).dot(y)
return b
df = pd.DataFrame({'X':[1,2.5,3], 'y':[4,5,6.3]})
df['beta'] = df.expanding().apply(my_OLS_func, args = ('y', 'X'))
df['beta']
的期望值为0
(或NaN
)、0.66666667
和1.038462
。你知道吗
但是,这种方法似乎不起作用,因为这种方法似乎非常不灵活。我不知道怎样才能把这两个级数作为参数来传递。 如有任何建议,将不胜感激。你知道吗
一种方法是使用Statsmodels中的
RecursiveLS
(递归最小二乘)模型:相关问题 更多 >
编程相关推荐