2016-12-01 56 views
-1

我一直在使用Stata和eViews,并且知识或R的知识非常有限,这就是为什么我需要一些帮助。我估计的是2010年到2016年的法玛法国模型,因此我需要对每只股票进行回归。每个回归将具有超额回报(ereturn)作为因变量,然后MKTRF,HML和SMB作为自变量。股票代码存储在一个名为permno的变量中。我在这里看到的大部分问题都是关于用不同的变量循环回归的,但在我的情况下,变量不会改变,但观察结果是这样的。我需要保存系数和每个回归的R2值。我希望有人能帮忙。R中的循环回归具有不同的观察结果

+1

我不确定我是否理解您遇到的问题。你的问题是什么? – WillardSolutions

+0

我会尽力澄清。知道如何对整个样本进行1次回归,但我需要分别进行回归,每种回归都有一个回归。回归方程相同:eReturn = c + b1 * MKTRF + b2 * HML + b3 * SMB。我如何创建循环并从循环内运行回归并存储结果?谢谢 –

回答

0

基于你的变量,我认为你想运行一个回归观察组合“permno”?这是你可以做的。

# Create list of subsets 
dfList = split(df, permno) 

split()功能将您的“东风”,由一群“permno”假设permno是一个因素。现在使用lapply为每个子集运行相同的模型。

regSummaryList = lapply(dfList, function(x) { 
    lm(eReturn ~ MLTRF + HML + SMB, data = x) 
}) 

这将返回每个回归的回归对象列表。然后,您可以提取系数和R平方以下各项:

coefList = lapply(regSummaryList, coef) 
R2 = sapply(regSummaryList, function(x) summary(x)$r.squared) 

coefList将系数的名单,而R2将R2的向量。

+0

非常感谢。 –