【发布时间】:2018-05-08 09:53:04
【问题描述】:
我正在尝试计算一些权重,以便使用 R 进行间接处理比较。我稍微更改了一些代码,以反映我只是将平均值居中。但是,此代码不会运行。
我相信这是由于a1 矩阵有两列而不是一列,但我真的不知道如何改变它。我尝试在矩阵中添加一列零和一,但我不确定这是否会给我一个正确的结果。
当然,这可能根本不是问题,但我看不出还有什么可能导致这种情况。我已经包含了代码,任何建议都将不胜感激。
# 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
【问题讨论】:
标签: r matrix vector dimensions