I'm interested in calculating a geometric mean inside the aggregate function in a panel dataset.

While my UDF works in plain script the results when using as aggregation function are wrong.

Could you please help me with this issue, here is the hansl script:

function scalar fn_geomean(series X)

catch scalar Y = prodc({X})^(1/nobs(X))

if $error<>0

Y=NAN

endif

return Y

end function

open abdata.gdt

series test = abs(n)

matrix testmean = aggregate(test, const, mean)

eval mean(test)~ testmean[, 3]

matrix testgeomean = aggregate(test, const, fn_geomean)

eval fn_geomean(test) ~ testgeomean[, 3]

Cheers

Leon