2015-10-18 49 views
1

其實我需要使用線性迴歸來計算參數theta0和theta1。 我的數據框(data.1)由兩列組成,第一個是日期時間,第二個是依賴於此日期的結果。
像這樣:R中日期和一些相關輸出的線性迴歸

 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") 

現在我想用計算theta0和theta1以下情況:

  1. y=data.1[[2]]x=dates wh ICH是相似的,不論今年
  2. y=data.1[[2]]x=months這是類似當年

請建議不論..

+2

在'R'線性迴歸通過'lm'功能實現。有關詳細信息,請參閱'?lm'。 – nicola

+0

@Mohit如果我的回答對你有幫助,請將其標記爲已接受:) – Bas

回答

3

正如@Nicola說,你需要使用lm function線性迴歸的R
如果您想了解更多關於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將優先使用<-來分配變量。
以你的代碼的第一位,它會成爲:

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 
+1

'='作業不是「錯誤」是一種風格選擇,甚至可能成爲Mohit工作風格指南的一部分。 – hrbrmstr

+0

@Hrbrmstr,編輯它:) – Bas