我试图使用单一指数模型估算3种股票和多伦多证券交易所的alpha beta和sigma2_ei。这是我目前的R代码
导入数据
setwd("~/Desktop/R Data Sets") Ass2Data1 <- read.csv("~/Desktop/R Data Sets/Ass2DataSheet1.csv") View(Ass2Data1)
将数据转换为矩阵形式
b <- as.matrix(Ass2Data1)
生成初始向量和矩阵
x <- rep(0,60)
xx <- matrix(x, ncol=4, nrow=3)
stock <- rep(0,3)
alpha <- rep(0,3)
beta <- rep(0,3)
mse <- rep(0,3)
Rbar <- rep(0,3)
Ratio <- rep(0,3)
col1 <- rep(0,3)
col2 <- rep(0,3)
col3 <- rep(0,3)
col4 <- rep(0,3)
col5 <- rep(0,3)
回归索引上的每个股票并记录结果
for(i in 1:3){
alpha[i] <- lm(data=Ass2Data1,formula=Ass2Data1[,1] ~ Ass2Data1[,4]$coefficients[1])
beta[i] <- lm(data=Ass2Data1,formula=Ass2Data1[,2] ~ Ass2Data1[,4]$coefficients[2])
Rbar[i] <- alpha[i]+beta[i]*mean(b[,4])
mse[i] <-sum(lm(data=Ass2Data1,formula=Ass2Data1[,i] ~ Ass2Data1[,4])$residuals2)/(nrow(b)-2)
Ratio[i] <- (Rbar[i]/beta[i])
stock[i] <- i }
创建表格
xx <- (cbind(stock,alpha,beta,Rbar,mse,Ratio))
但是我不断收到以下错误消息:
Ass2Data1 [,4]中的错误$系数:$运算符对原子矢量无效
和
beta [i] * mean(b [,4])出错:二元运算符的非数字参数
如果有人能指出我正确的方向,我会在这里做错了,我们将不胜感激。
答案 0 :(得分:0)
检查?lm
,更改结束)
alpha[i] <- lm(data=Ass2Data1,formula=Ass2Data1[,1] ~ Ass2Data1[,4])$coefficients[1]
beta[i] <- lm(data=Ass2Data1,formula=Ass2Data1[,2] ~ Ass2Data1[,4])$coefficients[2]
更好的方法是通过coef
获取系数:
alpha[i] <- coef(lm(data=Ass2Data1,formula=Ass2Data1[,1] ~ Ass2Data1[,4]))[1]
beta[i] <- coef(lm(data=Ass2Data1,formula=Ass2Data1[,2] ~ Ass2Data1[,4]))[2]