我正在參加一個udemy課程,並且在一課中有一個函數需要使用1和0的向量x,並基於之前的k值序列預測下一個值。我試圖總結我的周圍腦爲什麼我需要在下面的函數在0線csx <- c(0,cumsum(x)).
爲什麼使用cumsum()時這個預測函數需要一個零?
predc <- function(x,k) {
n <- length(x)
k2 <- k/2
# the vector pred will contain our predicted values
pred <- vector(length=n-k)
csx <- c(0,cumsum(x))
for (i in 1:(n-k)) {
if (csx[i+k] - csx[i] >= k2)
pred[i] <- 1
else
pred[i] <- 0
}
return(mean(abs(pred-x[(k+1):n])))
}
只是一個註釋:它不是處理_「案例pred(x,1)」_(如在_specific調用to_'predc',請注意上面的函數調用中缺少的'c' typo),它是所有對'predc'的調用都需要預測函數按預期工作(未移位)。前置0專門用於嵌入在函數_中的for循環中'i = 1'的代碼。因此,如果上面顯示的'pred(x,1)'錯誤確實是錯誤行爲的一個例子,如果忽略cumsum中的0,但它不是受其影響的單個情況。 – dfri
你是對的。我匆忙地寫了這些。它是在那裏處理第一次滯後。更多的是旨在展示如何通過抽樣和調用該功能來檢驗其重要性。收斂的問題是k的任何較小的值,因爲第一個元素的滯後產生問題。將編輯答案。 – Gopala