2017-11-24 3 views
0

R을 사용하여 간접 치료 비교를 수행하기 위해 일부 가중치를 계산하려고합니다. 평균을 중심으로 만 반영한다는 점을 반영하기 위해 일부 코드를 약간 변경했습니다. 그러나이 코드는 실행되지 않습니다.행렬의 차원이 최적화 된 R

이것은 하나 대신 두 개의 열이있는 a1 행렬 때문이라고 생각하지만이 변경 방법을 실제로 고칠 수는 없습니다. 행렬에 0과 1 열의 열을 추가하려고 시도했지만 정확한 결과를 얻을지 확실하지 않습니다.

물론 이것은 전혀 문제가되지 않을 수도 있지만, 그 밖의 원인이 무엇인지 알 수 없습니다. 나는 코드를 포함 시켰고 어떤 충고도 인정 될 것이다.

# Objective function 
    objfn <- function(a1, X){ 
     sum(exp(X %*% a1)) 
    } 

    # Gradient function 
    gradfn <- function(a1, X){ 
     colSums(sweep(X, 1, exp(X %*% a1), "*")) 
    } 

    X.EM.0 = data$A-age.mean 

    # Estimate weights 
    print(opt1 <- optim(par = c(0,0), fn = objfn, gr = gradfn, X = X.EM.0, method = "BFGS")) 
    a1 <- opt1$par 

답변

0

이렇게 간단한 해결책으로, 나는 이것을 게시하는 것이 다소 당황 스럽다.

par=c(0,0)은 데이터 열과 일치하도록 변경해야합니다. 여기가 하나로 변경되었습니다.