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