Калькулятор теста Краскела-Уоллиса

@import url('https://fonts.googleapis.com/css?family=Droid+Serif|Raleway');

.axis--y .domain { display: none; }

h1 { text-align: center; font-size: 50px; margin-bottom: 0px; font-family: 'Raleway', serif; }

p { color: black; text-align: center; margin-bottom: 15px; margin-top: 15px; font-family: 'Raleway', sans-serif; }

words {

color: black; font-family: Raleway; max-width: 550px; margin: 25px auto; line-height: 1.75; }

words_text_area {

display:inline-block; color: black; font-family: Raleway; max-width: 550px; margin: 25px auto; line-height: 1.75; padding-left: 100px; }

calcTitle {

text-align: center; font-size: 20px; margin-bottom: 0px; font-family: 'Raleway', serif; }

hr_top {

width: 30%; margin-bottom: 0px; border: none; height: 2px; color: black; background-color: black; }

hr_bottom {

width: 30%; margin-top: 15px; border: none; height: 2px; color: black; background-color: black; }

words_table label, #words_table input {

display: inline-block; vertical-align: baseline; width: 350px; }

#buttonCalc { border: 1px solid; border-radius: 10px; margin-top: 20px;

cursor: pointer; outline: none; background-color: white; color: black; font-family: 'Work Sans', sans-serif; border: 1px solid grey; /* Green */ }

#button:hover { background-color: #f6f6f6; border: 1px solid black; }

.label_radio { text-align: center; }

td, tr, th { border: 1px solid black; } table { border-collapse: collapse; } td, th { min-width: 50px; height: 21px; } .table_span_a, .table_span_b, .table_span_c, .table_span_d, .table_span_e { width: 100%; display: block; }

words_table {

color: black; font-family: Raleway; max-width: 350px; margin: 25px auto; line-height: 1.75; }

summary_table {

color: black; font-family: Raleway; max-width: 550px; margin: 25px auto; line-height: 1.75; padding-left: 20px; }

.label_radio { text-align: center; } Этот калькулятор теста Крускала-Уоллиса сравнивает медианы трех или более независимых выборок. Это непараметрическая версия однофакторного дисперсионного анализа.

Просто введите значения для пяти образцов в ячейки ниже, затем нажмите кнопку «Рассчитать».

Образец 1

11, 12, 12, 14, 16, 19, 19, 20, 21, 21 Образец 2

16, 16, 16, 17, 18, 19, 22, 24, 25, 32 Образец 3

18, 18, 19, 21, 21, 22, 22, 23, 24, 26 Образец 4

Образец 5

H Статистика: 6,59806

p-значение: 0,03692

//create function that performs calculations function calc() {

//get raw data for each group var group_a = document.getElementById('a').value.split(',').map(Number); var group_b = document.getElementById('b').value.split(',').map(Number); var group_c = document.getElementById('c').value.split(',').map(Number); var group_d = document.getElementById('d').value.split(',').map(Number); var group_e = document.getElementById('e').value.split(',').map(Number);

//define addition function function add(a, b) { return a + b; }

//define function to perform kruskal-wallis test function kruskal() {

var ngroups = arguments.length, groupRankSums = new Array( ngroups ), groupsIndicators = [], i, j, arg, n = [], N, x = [], ranks, ties, tieSumTerm, key, s, stat_placeholder, stat, param, pval;

if ( ngroups < 2 ) { throw new Error( 'kruskal()::invalid number of input arguments. Must provide at least two array-like arguments. Value: ' + arg + '.' ); }

for ( i = 0; i < ngroups; i++ ) { arg = arguments[ i ]; n[ i ] = arg.length; groupRankSums[ i ] = 0;

for ( j = 0; j < n[ i ]; j++ ) { groupsIndicators.push( i ); x.push( arg[ j ] ); } }

N = x.length; var sorted = x.slice().sort(function(a,b){return a-b}); var reversed = sorted.slice(0).reverse(); ranks = x.slice().map(function(v){ return ((sorted.indexOf(v) + 1) + (reversed.length - reversed.indexOf(v))) / 2;});

// calculate # ties for each value & rank sums per group ties = {};

for ( i = 0; i < N; i++ ) { groupRankSums[ groupsIndicators[ i ] ] += ranks[ i ]; if ( x[ i ] in ties ) { ties[ x[ i ] ] += 1; } else { ties[ x[ i ] ] = 1; } }

// calculate test statistic using short-cut formula rank_squares = groupRankSums.map(function(x) { return Math.pow(x, 2); }); rank_squares_sum = (rank_squares.map(function(x, i) { return x / n[i]; })).reduce(add, 0); stat = (12/(N*(N+1))) * rank_squares_sum - 3*(N+1);

param = ngroups - 1; pval = 1 - jStat.chisquare.cdf(stat, param);

return { 'H': stat, 'df': param, 'pValue': pval, };

} // end FUNCTION kruskal()

if (group_a.length > 1) { var flag_group_a = 1; } else { var flag_group_a = 0;}; if (group_b.length > 1) { var flag_group_b = 1; } else { var flag_group_b = 0;}; if (group_c.length > 1) { var flag_group_c = 1; } else { var flag_group_c = 0;}; if (group_d.length > 1) { var flag_group_d = 1; } else { var flag_group_d = 0;}; if (group_e.length > 1) { var flag_group_e = 1; } else { var flag_group_e = 0;};

var total_treatments = [flag_group_a, flag_group_b, flag_group_c, flag_group_d, flag_group_e].reduce(add, 0);

var out;

if (total_treatments == 2) { out = kruskal(group_a, group_b); } else if (total_treatments == 3) { out = kruskal(group_a, group_b, group_c); } else if (total_treatments == 4) { out = kruskal(group_a, group_b, group_c, group_d); } else if (total_treatments == 5){ out = kruskal(group_a, group_b, group_c, group_d, group_e); }

var H = out[Object.keys(out)[0]]; var p = out[Object.keys(out)[2]];

//--------------OUTPUT RESULTS-----------//

document.getElementById('H').innerHTML = H.toFixed(5); document.getElementById('p').innerHTML = p.toFixed(5); }

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.