R中的线性回归用于日期和一些相关输出

时间:2015-10-18 07:43:29

标签: r datetime regression linear

实际上我需要使用线性回归计算参数theta0和theta1。 我的数据框(data.1)由两列组成,第一列是日期时间,第二列是依赖于此日期的结果。
像这样:

        data.1[[1]]  data.1[[2]]
2004-07-08 14:30:00        12.41

现在,我有这个代码,它迭代了很多次来计算参数theta0theta1

x=as.vector(data.1[[1]])
y=as.vector(data.1[[2]])

plot(x,y)

theta0=10
theta1=10
alpha=0.0001
initialJ=100000
learningIterations=200000

J=function(x,y,theta0,theta1){
m=length(x)
sum=0
for(i in 1:m){
  sum=sum+((theta0+theta1*x[i]-y[i])^2)
}
sum=sum/(2*m)
return(sum)
}

updateTheta=function(x,y,theta0,theta1){
sum0=0
sum1=0
m=length(x)
for(i in 1:m){
   sum0=sum0+(theta0+theta1*x[i]-y[i])
   sum1=sum1+((theta0+theta1*x[i]-y[i])*x[i])
 }
sum0=sum0/m
sum1=sum1/m
theta0=theta0-(alpha*sum0)
theta1=theta1-(alpha*sum1)
 return(c(theta0,theta1))
}    

for(i in 1:learningIterations){
thetas=updateTheta(x,y,theta0,theta1)
tempSoln=0
tempSoln=J(x,y,theta0,theta1)
if(tempSoln<initialJ){
  initialJ=tempSoln
}
if(tempSoln>initialJ){
   break
 }
theta0=thetas[1]
theta1=thetas[2]
#print(thetas)
#print(initialJ)
plot(x,y)
lines(x,(theta0+theta1*x), col="red")
  }
  lines(x,(theta0+theta1*x), col="green")

现在我想使用以下场景计算theta0和theta1:

  1. y=data.1[[2]]x=dates无论年度如何都是相似的
  2. y=data.1[[2]]x=months无论年度如何都是相似的
  3. 请建议..

1 个答案:

答案 0 :(得分:3)

正如@Nicola所说,你需要在R中使用lm function进行线性回归。
如果您想详细了解linear regression结帐this或关注this tutorial

首先,你必须确定你的公式。您想使用Theta0Theta1 / data.1[[2]]计算datesmonths

你的第一个公式将是:

formula <- Theta0 ~ data.1[[2]] + dates

然后你会创建linear model

variablename <- lm(formula, dataset)

在此之后,您可以使用输出进行各种计算 例如,您可以计算anova,或只打印摘要:

anova(variablename)
summary(variablename)

<强>旁注:
。 我注意到您使用=分配变量。这不是推荐的括号。有关更多信息,请查看Google's R Style Guide
R中,最好使用<-来分配变量 取代码的第一位,它将成为:

x <- as.vector(data.1[[1]])
y <- as.vector(data.1[[2]])

plot(x,y)

theta0 <- 10
theta1 <- 10
alpha <- 0.0001
initialJ <- 100000
learningIterations <- 200000