我有以下数据表:
<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每次回归的观察次数。
任何帮助将不胜感激!
答案 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投资组合上运行简单的循环。