Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Switch services using the Version drop-down list. Learn more about navigation.
Applies to: ✅ Azure Data Explorer
The function wilcoxon_test_fl() is a user-defined function (UDF) that performs the Wilcoxon Test.
Prerequisites
- The Python plugin must be enabled on the cluster. This is required for the inline Python used in the function.
Syntax
T | invoke wilcoxon_test_fl()(data, test_statistic,p_value)
Learn more about syntax conventions.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| data | string |
✔️ | The name of the column containing the data to be used for the test. |
| test_statistic | string |
✔️ | The name of the column to store test statistic value for the results. |
| p_value | string |
✔️ | The name of the column to store p-value for the results. |
Function definition
You can define the function by either embedding its code as a query-defined function, or creating it as a stored function in your database, as follows:
Define the function using the following let statement. No permissions are required.
Important
A let statement can't run on its own. It must be followed by a tabular expression statement. To run a working example of wilcoxon_test_fl(), see Example.
let wilcoxon_test_fl = (tbl:(*), data:string, test_statistic:string, p_value:string)
{
let kwargs = bag_pack('data', data, 'test_statistic', test_statistic, 'p_value', p_value);
let code = ```if 1:
from scipy import stats
data = kargs["data"]
test_statistic = kargs["test_statistic"]
p_value = kargs["p_value"]
def func(row):
statistics = stats.wilcoxon(row[data])
return statistics[0], statistics[1]
result = df
result[[test_statistic, p_value]] = df.apply(func, axis=1, result_type = "expand")
```;
tbl
| evaluate python(typeof(*), code, kwargs)
};
// Write your query to use the function here.
Example
The following example uses the invoke operator to run the function.
To use a query-defined function, invoke it after the embedded function definition.
let wilcoxon_test_fl = (tbl:(*), data:string, test_statistic:string, p_value:string)
{
let kwargs = bag_pack('data', data, 'test_statistic', test_statistic, 'p_value', p_value);
let code = ```if 1:
from scipy import stats
data = kargs["data"]
test_statistic = kargs["test_statistic"]
p_value = kargs["p_value"]
def func(row):
statistics = stats.wilcoxon(row[data])
return statistics[0], statistics[1]
result = df
result[[test_statistic, p_value]] = df.apply(func, axis=1, result_type = "expand")
```;
tbl
| evaluate python(typeof(*), code, kwargs)
};
datatable(id:string, sample1:dynamic) [
'Test #1', dynamic([23.64, 20.57, 20.42]),
'Test #2', dynamic([20.85, 21.89, 23.41]),
'Test #3', dynamic([20.13, 20.5, 21.7, 22.02])
]
| extend test_stat= 0.0, p_val = 0.0
| invoke wilcoxon_test_fl('sample1', 'test_stat', 'p_val') -->
Output
| ID | sample1 | test_stat | p_val |
|---|---|---|---|
| Test #1 | [23.64, 20.57, 20.42] | 0, 0.10880943004054568 | |
| Test #2 | [20.85, 21.89, 23.41] | 0, 0.10880943004054568 | |
| Test #3 | [20.13, 20.5, 21.7, 22.02] | 0, 0.06788915486182899 |