【问题标题】:Linear Regression in R for Date and some dependant output日期和一些相关输出的 R 中的线性回归
【发布时间】:2015-10-18 07:43:29
【问题描述】:

实际上我需要使用线性回归计算参数 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 无论年份如何,都是相似的

请建议..

【问题讨论】:

  • R 中的线性回归是通过lm 函数实现的。详情请见?lm
  • @Mohit 如果我的回答对您有所帮助,请将其标记为已接受 :)

标签: r datetime regression linear-regression


【解决方案1】:

正如@Nicola 所说,您需要在R 中使用lm function 进行线性回归。
如果您想了解更多关于linear regression 的信息,请查看this 或关注this tutorial

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

你的第一个公式应该是这样的:

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

然后您将创建linear model

variablename <- lm(formula, dataset)

之后,您可以将输出用于各种计算。
例如,您可以计算方差分析,或者只打印摘要:

anova(variablename)
summary(variablename)

旁注:
我注意到您使用= 分配变量。不建议使用括号。欲了解更多信息,请查看Google's R Style Guide
R 中,最好使用&lt;- 来分配变量。
取你的代码的第一部分,它会变成:

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

【讨论】:

  • = assignment is not "wrong" 是一种风格选择,甚至可能是 Mohit 工作的风格指南的一部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-16
  • 2015-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-13
相关资源
最近更新 更多