error in coding probability weighting function

88 Views Asked by At

I have a question regarding my code (sorry if it is really easy or stupid, I have never coded before and tried this for a project). I tried running a probability weighting function for certain probability vector. I however get an error and I do not know how to fix it. When i run the argument of the function first seperatly and then call it in the function it works, but why does it not work in the function itself? Code Below

I hope you can help me. Thanks a lot!

import numpy as np

p = np.arange(0.01, 1, 0.01) # probalities equaly spread between 0 & 1 in steps of 0.01 

alpha_1 = 0.5
alpha = np.zeros((1, 99)) + alpha_1 # vector of same length as p with all entries being 0.5

term_in_exopnential_of_weighting_function = - (- np.log(p))**alpha
w = np.exp(term_in_exopnential_of_weighting_function) # weighted probability function 

# probability weighting function
#w(p)=np.exp(-(- np.log(p))**alpha) 
    # --> error, but why?`
1

There are 1 best solutions below

0
On BEST ANSWER

It looks like what you're trying to do is to create a function which is named w. In Python the syntax for a function definition is

def f(a, b, c):
  # do something here
  result = <something involving a, b, and c>
  return result

Then you can call the function as f(1, 2, 3) or whatever for a, b, and c.

In the example you gave, I think maybe what you need is

>>> def w(alpha, p):
...   return np.exp(-(- np.log(p))**alpha)
... 

Where >>> is the Python interpreter input prompt. Note that the function body must be indented, as enforced by the interpreter. The ... with nothing following it means I just hit the Enter key without typing anything. With that definition of w, I get the following result, given alpha and p as you specified:

>>> w(alpha, p)
array([[0.116955  , 0.13836178, 0.15372645, 0.16627328, 0.17713938,
        0.18687366, 0.19578782, 0.20407777, 0.21187567, 0.21927533,
        0.2263461 , 0.23314086, 0.23970099, 0.24605961, 0.25224365,
        0.25827542, 0.26417363, 0.26995416, 0.27563063, 0.28121487,
        0.28671721, 0.29214677, 0.29751164, 0.30281908, 0.30807562,
        0.31328717, 0.31845916, 0.32359653, 0.32870387, 0.33378542,
        0.33884514, 0.34388676, 0.34891376, 0.35392947, 0.35893704,
        0.36393949, 0.36893972, 0.37394054, 0.37894464, 0.38395468,
        0.38897324, 0.39400286, 0.39904606, 0.40410531, 0.40918309,
        0.41428186, 0.41940411, 0.42455233, 0.42972903, 0.43493677,
        0.44017815, 0.44545582, 0.45077251, 0.45613099, 0.46153416,
        0.466985  , 0.4724866 , 0.47804216, 0.48365505, 0.48932878,
        0.49506703, 0.50087369, 0.50675283, 0.5127088 , 0.51874619,
        0.52486989, 0.53108512, 0.53739747, 0.54381293, 0.55033797,
        0.55697957, 0.56374529, 0.57064336, 0.57768275, 0.58487331,
        0.59222586, 0.59975235, 0.60746605, 0.61538177, 0.62351608,
        0.63188769, 0.64051783, 0.64943073, 0.65865431, 0.66822097,
        0.67816868, 0.68854243, 0.69939617, 0.71079551, 0.72282159,
        0.73557672, 0.74919294, 0.76384569, 0.77977671, 0.79733511,
        0.81705854, 0.8398553 , 0.86750307, 0.90461   ]])