2013-03-14 72 views
1

我試圖找到以下問題的解決方案:的Optim()和解決R中的對角矩陣(擬合參數錯誤)

的重現性任意值:

AZ2k <- seq(1:14) 
noAZ2k <- matrix(seq(1:25), 14, 50) 
par <- rep(0.02 , 50) 


vw <- function(w) 
{ 

    t(AZ2k - noAZ2k %*% par)%*%w%*%(AZ2k - noAZ2k %*% par) 

} 


vweights <- optim(diag(1,14), vw, gr = NULL, 
    method = c("L-BFGS-B"), 
    lower = 0, upper = 10000,control = list(factr = 1e4, maxit = 1000, pgtol = .01), 
    hessian = FALSE) 

當我鍵入在

t(AZ2k - noAZ2k %*% par)%*%diag(1,14)%*%(AZ2k - noAZ2k %*% par) 

我得到一個結果,但是當我嘗試運行它說,該值不配合這令我感到詫異的優化。

我可能錯過了一些完全明顯的東西,但我找不到錯誤的地方,除非優化只是錯誤的函數,但我找不出合適的選擇。

回答

0

你-w參數轉換爲矢量,所以你需要將它與正確的維度強制到矩陣:

vw <- function(w){ 
    w <- matrix(w,nrow=14,ncol=14,byrow=T) 
    t(AZ2k - noAZ2k %*% par)%*%w%*%(AZ2k - noAZ2k %*% par) 
} 
+0

感謝,我給一個嘗試 – Julius 2013-03-14 19:51:26