用R测试投资组合中的Alpha和Beta

用R测试投资组合中的Alpha和Beta,r,regression,alpha,R,Regression,Alpha,我需要使用R在单因素模型上测试少数投资组合的Alpha和Beta。我认为这是一个需要测试回归系数是否为零的问题。我使用了我上传到RStudio上的名为French的数据。d1、d4、d6和d10是我想要测试的投资组合,rmrf是我使用的市场代理 betas <- NULL alphas <- NULL for(j in French[,d1]+French[,d4]+French[,d6]+French[,d10]){ m <- lm(French[,j]~French[,

我需要使用R在单因素模型上测试少数投资组合的Alpha和Beta。我认为这是一个需要测试回归系数是否为零的问题。我使用了我上传到RStudio上的名为French的数据。d1、d4、d6和d10是我想要测试的投资组合,rmrf是我使用的市场代理

betas <- NULL
alphas <- NULL
for(j in French[,d1]+French[,d4]+French[,d6]+French[,d10]){
  m <- lm(French[,j]~French[,rmrf])
  betas(j) <- as.real(m$coefficients[2])
  alphas(j) <- as.real(m$coefficients[1])
}
在此之后,我打算对alphas和beta进行t检验。然而,我得到了以下信息:

.subsetx,j中出错:只有0可能与负下标混合


有人能指出我的代码哪里出错了吗?

您应该使用以下更正后的代码:

betas <- NULL
alphas <- NULL
dat <- French[c("d1", "d4", "d6", "d10")] # a subset for the loop
for(j in seq(dat)) {
  m <- lm(dat[[j]] ~ French[,"rmrf"])
  betas[j] <- m$coefficients[2]
  alphas[j] <- m$coefficients[1]
}

返回数据框的行名与输入数据框的列名相对应。

这里有很多问题@斯文已经解决了其中一些问题。您得到的子集错误是因为您试图使用j作为数组的索引,但j不是索引,而是实际数据

这应该起作用:

betas<-c()
alphas<-c()
for(j in c("d1","d4","d6","d10")){
  m <- lm(French[,j] ~ French[,"rmrf"])
  betas<-c(betas,m$coefficients[2])
  alphas<-c(alphas,m$coefficients[1])
}
顺便说一句,对你的alpha和beta进行t检验可能不是判断它们是否具有统计学意义的最佳方法。例如,对alpha数组进行t检验,可以测试这些alpha是否与0有显著差异,但它不会告诉您任何单个投资组合的alpha是否具有统计显著性。另一个可能更好的选择是单独测试每个回归系数的显著性。例如,此代码将为您提供每个回归的alpha和beta系数的T统计量

betaT<-c()
alphaT<-c()
for(j in c("d1","d4","d6","d10")){
  m <- lm(French[,j] ~ French[,"rmrf"])
  betaT<-c(betaT,summary(m)$coefficients[2,3])
  alphaT<-c(alphaT,summary(m)$coefficients[1,3])
}

有关详细信息和更多信息,请参见?summary.lm。

感谢您的输入。我更正了我的代码,但RStudio仍然给我相同的错误消息。.subsetx,j中出错:只有0可以与负下标混合,从而修复了该子集的错误。之后,RStudio给了我另一个错误,说明函数为.real未找到。我试图用as.double和as.numeric替换它,但这两次我都遇到了另一个错误:betas[j]@user3125351中的错误抱歉,出现了一个错误。请参阅更新。
betaT<-c()
alphaT<-c()
for(j in c("d1","d4","d6","d10")){
  m <- lm(French[,j] ~ French[,"rmrf"])
  betaT<-c(betaT,summary(m)$coefficients[2,3])
  alphaT<-c(alphaT,summary(m)$coefficients[1,3])
}