/usr/share/hyphy/ChartAddIns/Goodness of Fit is in hyphy-common 2.2.7+dfsg-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | if (NON_EMPTY_SELECTION)
{
data_rows = Columns (SELECTED_CHART_ROWS);
if (data_rows % 2 == 0)
{
temp = -1;
data_columns = -1;
for (count = 0; count<data_rows; count = count+1)
{
temp2 = SELECTED_CHART_COLS[count];
if (temp<0)
{
temp = temp2;
}
else
{
if (temp!=temp2)
{
if (data_columns<0)
{
data_columns = temp2;
}
else
{
if (temp2!=data_columns)
{
break;
}
}
}
}
}
if ((count == data_rows)&&(data_columns>=0)&&(temp>=0))
{
for (count = 0; count < data_rows; count = count+2)
{
if (SELECTED_CHART_ROWS[count]!=SELECTED_CHART_ROWS[count+1])
{
break;
}
}
if (count==data_rows)
{
SELECTED_CHART_ROWS = {2,data_rows/2};
for (count = 0; count < data_rows; count = count+2)
{
SELECTED_CHART_ROWS[0][count/2]=SELECTED_CHART_DATA[count];
SELECTED_CHART_ROWS[1][count/2]=SELECTED_CHART_DATA[count+1];
}
SELECTED_CHART_DATA = SELECTED_CHART_ROWS;
data_rows = data_rows/2;
/* decide what the weight column is: weights or cum. distr */
data_mean = 0;
for (count = 0; count < data_rows; count = count + 1)
{
data_var = SELECTED_CHART_DATA[1][count];
if ((data_var<0)||(data_var>1))
{
fprintf (stdout, "Interval probabilities column must contain numbers between 0 and 1.\n");
return;
}
data_mean = data_mean + SELECTED_CHART_DATA[1][count];
}
chi2statistic = 0;
for (count = 0; count < data_rows; count = count + 1)
{
temp = data_rows*SELECTED_CHART_DATA[1][count];
chi2statistic = chi2statistic+(SELECTED_CHART_DATA[0][count]*data_rows-temp)^2/temp;
}
fprintf (stdout, "\nGoodness of fit statisitc: ", chi2statistic,
"\np-value: ", 1-CChi2(chi2statistic,data_rows-1), "\n");
return 0;
}
}
}
fprintf (stdout, "Please select two columns with interval proportions (1st column) and hypothesized distribution weights (2nd columns).\n");
}
else
{
NON_EMPTY_SELECTION = -1;
}
|