Newey West关于多元线性回归

时间:2020-10-22 17:51:25

标签: r data.table portfolio

我有以下数据表:

<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@vue/composition-api@1.0.0-beta.18"></script>
<div id="app">
  <table>
    <tr>
      <th>Option</th>
      <th>Broken input</th>
      <th>Model</th>
      <th>Fixed input</th>
      <th></th>
      <tr>
        <tr v-for="(_, i) in answer.options" :key="'#question-'+ answer.id + '-' + i">
          <td>Option {{ i }}:</td>
          <td>
            <broken-input v-model="answer.options[i]" />
          </td>
          <td>
            {{ answer.options[i] }}
          </td>
          <td>
            <fixed-input v-model="answer.options[i]" />
          </td>
          <td><button @click="deleteOption(i)">Remove option</button></td>
        </tr>
  </table>
  <button @click="addOption()">Add option</button>
</div>

我想做的是对ER〜F1 + F2 + F3 + F4 + F5 + F6 + F7进行回归,并对标准误差进行Newey West调整,滞后为1。

最后,我想报告Fs的系数,截距,t-stat和调整后的R平方,以及每个P_name每次回归的观察次数。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

关于第一个问题,您可以运行一个线性回归模型并获得Newey-West标准错误,如下所示:

library(xts) # for time series 
library(lmtest) # for coeftest; requires the sandwich package

# create sample data
set.seed(123)
timeindex <- seq.Date(from = as.Date('2000-01-01'),
                      to = as.Date('2002-09-26'),
                      by = 'days')
sample_data <- xts(matrix(rnorm(1000*8), ncol = 8),
                   order.by = timeindex)
names(sample_data) <- c('ER', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7')

# run the regression model
lm1 <- lm(ER ~ F1 + F2 + F3 + F4 + F5 + F6 + F7, 
          data = sample_data)

summary(lm1) # values without Newey-West
coeftest(lm1,vcov=NeweyWest(lm1,lag = 1, verbose=T)) # with Newey-West std. errors

要获取每个P_name的不同值,您可以过滤数据,然后手动为每个P_name提供数据给lm,如果您没有太多的话。另外,您可以编写一个函数为您完成此任务,并在P_name投资组合上运行简单的循环。

相关问题