- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我希望在 Python 中构建一个函数,该函数使用以下等式创建简单的 OLS 回归:
Y_i - Y_i-1 = A + B(X_i - X_i-1) + E
换句话说,Y_Lag = alpha + beta(X_Lag) + Error term
目前,我有以下数据集(这是一个简短的版本)
注意:Y = Historic_Rate
df = pd.DataFrame(np.random.randint(low=0, high=10, size=(5, 5)), columns=['Historic_Rate', 'Overnight', '1M', '3M', '6M'])
所以,我要构建的是我迭代地获取 X 变量并将其放入简单的线性回归中,到目前为止我构建的代码如下所示:
#Start the iteration process for the regression to in turn fit 1 parameter
#Import required packages
import pandas as pd
import numpy as np
import statsmodels.formula.api as sm
#Import dataset
df = pd.DataFrame(np.random.randint(low=0, high=10, size=(5, 5)), columns=['Historic_Rate', 'Overnight', '1M', '3M', '6M'])
#Y_Lag is always 1 time period only
df['Y_Lag'] = df['Historic_Rate'].shift(1)
#Begin the process with 1 lag, taking one x variable in turn
array = df[0:0]
array.drop(array.columns[[0,5]], axis=1, inplace=True)
for X in array:
df['X_Lag'] = df['X'].shift(1)
Model = df[df.columns[4:5]]
Y = Model['Y_Lag']
X = Model['X_Lag']
Reg_model = sm.OLS(Y,X).fit()
predictions = model.predict(X)
# make the predictions by the model
# Print out the statistics
model.summary()
因此,从本质上讲,我希望创建一个列标题列表,依次系统地遍历我的循环,每个变量都将滞后,然后针对滞后的 Y 变量进行回归。
我还希望了解如何输出 model.X,其中 X 是数组的第 X 次迭代,用于变量的动态命名。
最佳答案
你很接近,我认为你只是混淆了你的变量 X
使用字符串 'X'
在你的循环中。我还认为你不是在计算 Y_i - Y_i-1
, 而只是倒退 Y_i-1
反对X_i-1
.
以下是循环回归的方法。我们还将使用字典来存储回归结果,键作为列名。
import pandas as pd
import numpy as np
import statsmodels.api as sm
df = pd.DataFrame(np.random.randint(low=0, high=10, size=(5, 5)),
columns=['Historic_Rate', 'Overnight', '1M', '3M', '6M'])
fit_d = {} # This will hold all of the fit results and summaries
for col in [x for x in df.columns if x != 'Historic_Rate']:
Y = df['Historic_Rate'] - df['Historic_Rate'].shift(1)
# Need to remove the NaN for fit
Y = Y[Y.notnull()]
X = df[col] - df[col].shift(1)
X = X[X.notnull()]
X = sm.add_constant(X) # Add a constant to the fit
fit_d[col] = sm.OLS(Y,X).fit()
现在如果你想做一些预测,比如说你的最后一个模型,你可以这样做:
fit_d['6M'].predict(sm.add_constant(df['6M']-df['6M'].shift(1)))
#0 NaN
#1 0.5
#2 -2.0
#3 -1.0
#4 -0.5
#dtype: float64
您可以获得摘要:fit_d['6M'].summary()
OLS Regression Results
==============================================================================
Dep. Variable: Historic_Rate R-squared: 0.101
Model: OLS Adj. R-squared: -0.348
Method: Least Squares F-statistic: 0.2254
Date: Thu, 27 Sep 2018 Prob (F-statistic): 0.682
Time: 11:27:33 Log-Likelihood: -9.6826
No. Observations: 4 AIC: 23.37
Df Residuals: 2 BIC: 22.14
Df Model: 1
Covariance Type: nonrobust
==============================================================================
coef std err t P>|t| [0.025 0.975]
------------------------------------------------------------------------------
const -0.4332 1.931 -0.224 0.843 -8.740 7.873
6M -0.2674 0.563 -0.475 0.682 -2.691 2.156
==============================================================================
Omnibus: nan Durbin-Watson: 2.301
Prob(Omnibus): nan Jarque-Bera (JB): 0.254
Skew: -0.099 Prob(JB): 0.881
Kurtosis: 1.781 Cond. No. 3.44
==============================================================================
关于Python:为简单的 OLS 循环一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52539749/
我是 PHP 新手。我一直在脚本中使用 for 循环、while 循环、foreach 循环。我想知道 哪个性能更好? 选择循环的标准是什么? 当我们在另一个循环中循环时应该使用哪个? 我一直想知道要
我在高中的编程课上,我的作业是制作一个基本的小计和顶级计算器,但我在一家餐馆工作,所以制作一个只能让你在一种食物中读到。因此,我尝试让它能够接收多种食品并将它们添加到一个价格变量中。抱歉,如果某些代码
这是我正在学习的一本教科书。 var ingredients = ["eggs", "milk", "flour", "sugar", "baking soda", "baking powder",
我正在从字符串中提取数字并将其传递给函数。我想给它加 1,然后返回字符串,同时保留前导零。我可以使用 while 循环来完成此操作,但不能使用 for 循环。 for 循环只是跳过零。 var add
编辑:我已经在程序的输出中进行了编辑。 该程序要求估计给定值 mu。用户给出一个值 mu,同时还提供了四个不等于 1 的不同数字(称为 w、x、y、z)。然后,程序尝试使用 de Jaeger 公式找
我正在编写一个算法,该算法对一个整数数组从末尾到开头执行一个大循环,其中包含一个 if 条件。第一次条件为假时,循环可以终止。 因此,对于 for 循环,如果条件为假,它会继续迭代并进行简单的变量更改
现在我已经习惯了在内存非常有限的情况下进行编程,但我没有答案的一个问题是:哪个内存效率更高;- for(;;) 或 while() ?还是它们可以平等互换?如果有的话,还要对效率问题发表评论! 最佳答
这个问题已经有答案了: How do I compare strings in Java? (23 个回答) 已关闭 8 年前。 我正在尝试创建一个小程序,我可以在其中读取该程序的单词。如果单词有 6
这个问题在这里已经有了答案: python : list index out of range error while iteratively popping elements (12 个答案) 关
我正在尝试向用户请求 4 到 10 之间的整数。如果他们回答超出该范围,它将进入循环。当用户第一次正确输入数字时,它不会中断并继续执行 else 语句。如果用户在 else 语句中正确输入数字,它将正
我尝试创建一个带有嵌套 foreach 循环的列表。第一个循环是循环一些数字,第二个循环是循环日期。我想给一个日期写一个数字。所以还有另一个功能来检查它。但结果是数字多次写入日期。 Out 是这样的:
我想要做的事情是使用循环创建一个数组,然后在另一个类中调用该数组,这不会做,也可能永远不会做。解决这个问题最好的方法是什么?我已经寻找了所有解决方案,但它们无法编译。感谢您的帮助。 import ja
我尝试创建一个带有嵌套 foreach 循环的列表。第一个循环是循环一些数字,第二个循环是循环日期。我想给一个日期写一个数字。所以还有另一个功能来检查它。但结果是数字多次写入日期。 Out 是这样的:
我正在模拟一家快餐店三个多小时。这三个小时分为 18 个间隔,每个间隔 600 秒。每个间隔都会输出有关这 600 秒内发生的情况的统计信息。 我原来的结构是这样的: int i; for (i=0;
这个问题已经有答案了: IE8 for...in enumerator (3 个回答) How do I check if an object has a specific property in J
哪个对性能更好?这可能与其他编程语言不一致,所以如果它们不同,或者如果你能用你对特定语言的知识回答我的问题,请解释。 我将使用 c++ 作为示例,但我想知道它在 java、c 或任何其他主流语言中的工
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
我是 C 编程和编写代码的新手,以确定 M 测试用例的质因数分解。如果我一次只扫描一次,该功能本身就可以工作,但是当我尝试执行 M 次时却惨遭失败。 我不知道为什么 scanf() 循环有问题。 in
这个问题已经有答案了: JavaScript by reference vs. by value [duplicate] (4 个回答) 已关闭 3 年前。 我在使用 TSlint 时遇到问题,并且理
我尝试在下面的代码中添加 foreach 或 for 循环,以便为 Charts.js 创建多个数据集。这将允许我在此折线图上创建多条线。 我有一个 PHP 对象,我可以对其进行编码以稍后填充变量,但
我是一名优秀的程序员,十分优秀!