I apply the below function to the range that has the same dimension as x or defaultdata. However the function does not seem to work properly and returns #Value mistake. The function is run in Microsoft Office 2010.
Cant figure out why the mistake occurs. Any assistance is much appreciated
Function TRANS(defaultdata As Range, x As Range, numranges As Integer)
Dim bound, numdefaults, obs, defrate, N, j, defsum, obssum, i
ReDim bound(1 To numranges), numdefaults(1 To numranges)
ReDim obs(1 To numranges), defrate(1 To numranges)
N = x.Rows.Count
defsum = 0
obssum = 0
'Determining number of defaults, observations and default rates for ranges
For j = 1 To numranges
bound(j) = Application.WorksheetFunction.Percentile(x, j / numranges)
numdefaults(j) = Application.WorksheetFunction.SumIf(x, "<=" & bound(j), defaultdata) - defsum
defsum = defsum + numdefaults(j)
obs(j) = Application.WorksheetFunction.CountIf(x, "<=" & bound(j)) - obssum
obssum = obssum + obs(j)
defrate(j) = numdefaults(j) / obs(j)
Next j
'Assigning range default rates in logistic transformation
Dim transform
ReDim transform(1 To N, 1 To 1)
For i = 1 To N
j = 1
While x(i) - bound(j) > 0
j = j + 1
Wend
transform(i, 1) = Application.WorksheetFunction.Max(defrate(j), 0.0000001)
transform(i, 1) = Log(transform(i, 1) / (1 - transform(i, 1)))
Next i
TRANS = numdefaults
End Function
The Excel file
Bookmarks