如何解决如何在没有循环的情况下获取statsmodels中的多个单变量OLS的变量t-stat?
以下代码可用于获取我运行的OLS的t统计量和r平方。但是,我有数百万个回归要运行,并且通过循环运行,这使我花了很多时间。如果建议使用其他解决方案,则表示赞赏。谢谢。
import statsmodels.api as sm
import pandas as pd
import numpy as np
x = np.cumsum(np.ones(5))
df_y = pd.DataFrame({"A": [10,20,30,40,50],"B": [20,10,"C": [32,234,23,42523]})
df_result = pd.DataFrame({"t-stats": np.ones(3)*np.nan,"r2": np.ones(3)*np.nan})
for i in range(0,df_y.shape[1]):
y = df_y.iloc[:,i]
results = sm.OLS(y,x).fit()
df_result.loc[i,"t-stats"] = (results.params/results.bse).values
df_result.loc[i,"r2"] = results.rsquared
对不起,请补充我的问题。
如果y中缺少值怎么办?如何处理?谢谢
解决方法
不幸的是,您不能使用statsmodels来执行此操作,因为y必须是单个变量。如果您确实需要此处的性能,则可以使用numpy轻松编写自己的版本。假设tick_check=False
永不改变
colorbar
这种方法不如使用statsmodels健壮,但由于避免了很多检查,边缘保护和计算不需要的统计信息,因此速度要快一个数量级。
在我的计算机上,此代码运行1.9毫秒,因此使用1,000,000个序列,大约需要2秒钟。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。