R中日期和某些相关输出的线性回归
实际上,我需要使用线性回归计算参数θ0和θ1。 我的数据框(data.1)由两列组成,第一列是日期时间,第二列是依赖于此日期的结果。R中日期和某些相关输出的线性回归,r,datetime,regression,linear-regression,R,Datetime,Regression,Linear Regression,实际上,我需要使用线性回归计算参数θ0和θ1。 我的数据框(data.1)由两列组成,第一列是日期时间,第二列是依赖于此日期的结果。 像这样: data.1[[1]] data.1[[2]] 2004-07-08 14:30:00 12.41 现在,我有了这段代码,它反复多次计算参数theta0,theta1 x=as.vector(data.1[[1]]) y=as.vector(data.1[[2]]) plot(x,y) theta0=10 theta
像这样:
data.1[[1]] data.1[[2]]
2004-07-08 14:30:00 12.41
现在,我有了这段代码,它反复多次计算参数theta0
,theta1
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")
x=as.vector(data.1[[1]])
y=as.vector(数据.1[[2]])
绘图(x,y)
θ0=10
θ1=10
α=0.0001
初始值j=100000
学习迭代次数=200000
J=函数(x,y,θ0,θ1){
m=长度(x)
总和=0
对于(1:m中的i){
总和=总和+((θ0+θ1*x[i]-y[i])^2)
}
总和=总和/(2*m)
回报(总和)
}
updateTheta=函数(x,y,θ0,θ1){
sum0=0
sum1=0
m=长度(x)
对于(1:m中的i){
sum0=sum0+(θ0+θ1*x[i]-y[i])
sum1=sum1+((θ0+θ1*x[i]-y[i])*x[i])
}
sum0=sum0/m
sum1=sum1/m
θ0=θ0-(α*sum0)
θ1=θ1-(α*sum1)
返回(c(θ0,θ1))
}
for(i in 1:learningIterations){
θ=更新θ(x,y,θ0,θ1)
tempSoln=0
tempSoln=J(x,y,θ0,θ1)
if(tempSolninitialJ){
打破
}
θ0=θ[1]
θ1=θ[2]
#打印(θ)
#打印(缩写J)
绘图(x,y)
行(x,(θ0+θ1*x),col=“红色”)
}
行(x,(θ0+θ1*x),col=“绿色”)
现在我想使用以下场景计算θ0和θ1:y=data.1[[2]]
和x=dates
,无论年份如何,它们都是相似的y=data.1[[2]]
和x=months
,无论年份如何,它们都是相似的请建议..正如@Nicola所说,您需要在
R
如果您想了解有关
线性回归的更多信息,请查看或遵循
首先,你必须确定你的公式。您希望使用数据计算Theta0
和Theta1
。1[[2]]
和日期
/月份
您的第一个公式大致如下:
formula <- Theta0 ~ data.1[[2]] + dates
之后,您可以使用输出进行各种计算。
例如,您可以计算方差分析,或者只打印摘要:
anova(variablename)
summary(variablename)
旁注:
我注意到您使用=
分配变量。不建议使用括号。有关更多信息,请查看
在R
中,最好使用R中的线性回归通过lm
函数实现。有关详细信息,请参见?lm
。@Mohit如果我的答案对您有帮助,请将其标记为已接受:)=
作业没有“错误”是一种样式选择,甚至可能是Mohit工作的样式指南的一部分。
anova(variablename)
summary(variablename)
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