1
我在將方程轉換爲代碼方面經驗不足。我被卡在將Juul中部分可能性的分數函數轉換爲代碼以在JuMP中進行評估。JuMP中Cox比例風險的得分函數
score function其中,當在0解決beta時,是最大值。
我做了一個簡單的小數據集。
Using DataFrames, DataFramesMeta, JuMP, Ipopt
#build DataFrame
times = [6,7,10,15,19,25]
is_censored = [1,0,1,1,0,1]
x= is_control = [1,1,0,1,0,0]
m = Model(solver=IpoptSolver(print_level=0))
using DataFrames
df = DataFrame();
df[:times]=times;
df[:is_censored]= is_censored;
df[:x]=x;
df
#sort df
df_sorted = sort!(df, cols = [order(:times)])
#make df_risk and df_uncensored
df_uncensored = @where(df_sorted, :is_censored .== 0)
df_risk = df_sorted
#use JuMP
##convert df to array
uncensored = convert(Array,df_uncensored[:x])
risk_set = convert(Array,df_risk[:x])
risk_index = convert(Array,find(is_censored .== 0))
x = convert(Array, x)
@variable(m, β, start = 0.0)
# score
@NLobjective(m, Max, sum(uncensored[i] - (([sum(exp(risk_set[j]*β)*x[j]) for j = risk_index[i]:length(risk_set)])/([(sum(exp(risk_set[j]*β)*x[j])) for j=risk_index[i]:length(risk_set)])) for i = 1:length(uncensored)))
我得到的錯誤是
ERROR: exp is not defined for type AffExpr. Are you trying to build a nonlinear problem? Make sure you use @NLconstraint/@NLobjective.
Stacktrace:
[1] exp(::JuMP.GenericAffExpr{Float64,JuMP.Variable}) at /home/icarus/.julia/v0.6/JuMP/src/operators.jl:630
[2] collect(::Base.Generator{UnitRange{Int64},##58#60}) at ./array.jl:418
[3] macro expansion at /home/icarus/.julia/v0.6/JuMP/src/parseExpr_staged.jl:489 [inlined]
[4] macro expansion at /home/icarus/.julia/v0.6/JuMP/src/parsenlp.jl:226 [inlined]
[5] macro expansion at /home/icarus/.julia/v0.6/JuMP/src/macros.jl:1086 [inlined]
[6] anonymous at ./<missing>:?
錯誤說,指數的問題,但我以前一樣具有指數在它的數似然和有沒有錯誤。
在R中的測試= -1.3261
如果上述代碼是工作我期望運行
solve(m)
println("β = ", getvalue(β))
我從來沒有見過在'茱莉亞'中使用過'$'。這是JuMP包的一部分嗎? – Alex
$運算符在Julia中有多種含義取決於上下文。在整數之間它是XOR邏輯運算符。內部字符串是字符串內插。在引用的表達式(AST,用於元編程)中,它是立即評估的子表達式。它全部在文檔中,請參閱[doc for operator](https://docs.julialang.org/en/stable/manual/mathematical-operations/),[doc for interpolation](https://docs.julialang。 org/en/stable/manual/strings /),[doc for metaprogramming](https://docs.julialang.org/en/release-0.4/manual/metaprogramming/) –