尝试通过单索引模型进行预测时出现两条R错误消息

时间:2016-02-10 20:22:37

标签: r error-handling syntax-error regression

我试图使用单一指数模型估算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])出错:二元运算符的非数字参数

如果有人能指出我正确的方向,我会在这里做错了,我们将不胜感激。

1 个答案:

答案 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]