メイン fitness-exact.html   Last modified: Sep 01, 2009
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;CHARSET=EUC-JP">
<link rel="shortcut icon" href="../favicon.ico">
<title>JavaScript</title>
<script src="io.js">document.write("io.js ファイルが見つかりません??<br>")</script>
<script src="gxp.js">document.write("gxp.js ファイルが見つかりません??<br>")</script>
<script src="xxp.js">document.write("xxp.js ファイルが見つかりません??<br>")</script>

<script language="JavaScript">
<!--

var n, o, e, p, total, fact, wt, x0, w2, count, inve

function out_table(table, e, p, total, ncol)
{
  var j

  printf("解析結果表\n\n")
  printf("%10s %8s %8s %8s\n", "カテゴリー", "観察数", "期待値", "理論比")
  for (j = 0; j < ncol; j++) {
    printf("%5i %13i %8.3f %8.3f\n", j + 1, table[j], e[j], p[j])
  }
  printf("%5s %13i %8.3f %8.3f\n\n", "合計", total, total, 1.0)
}

function calcX(o, e, n)
{
  var i, retv, t
  retv = 0
  for (i = 0; i < n; i++) {
    t = o[i] - e[i]
    retv += t * t * inve[i]
  }
  return retv
}

function prob(fact, o, p, total, n)
{
  var i, retv, retv2
  retv = fact[total]
  retv2 = 1
  for (i = 0; i < n; i++) {
    retv -= fact[o[i]]
    retv2 *= Math.pow(p[i], o[i])
  }
  return Math.exp(retv) * retv2
}

function found()
{
  var          x2, w
  x2 = calcX(o, e, n)
  w = prob(fact, o, p, total, n)
  wt += w
  if (x2 >= x0 || Math.abs(x2-x0) <= 1e-7) {
    w2 += w
  }
  count++
}

function factorial(n, fact)
{
  var             i
  fact[0] = 0
  for (i = 1; i <= n; i++) {
    fact[i] = fact[i - 1] + Math.log(i)
  }
}

function gen_tab(y)
{
  if (y == 0) {
    found()
  } else {
    gen_tab(y - 1)
    while (o[0]) {
      o[y]++
      o[0]--
      gen_tab(y - 1)
    }
    o[0] += o[y]
    o[y] = 0
  }
}

function fitness()
{
  var i, sum, p_val

  total = sum = 0
  for (i = 0; i < n; i++) {
    total += o[i]
    sum += e[i]
  }
  for (i = 0; i < n; i++) {
    p[i] = e[i]/sum
  }

  inve = new Array(n)
  for (i = 0; i < n; i++) {
    e[i] = total * p[i]
    inve[i] = 1.0 / e[i]
  }

  out_table(o, e, p, total, n)

  x0 = calcX(o, e, n)
  p_val = xxp(x0, n - 1)
  printf("カイ二乗値は %g,自由度は %i,P値は %g\n\n", x0, n - 1, p_val)

  fact = new Array(total + 1)
  factorial(total, fact)
  w2 = wt = count = 0
  for (i = 0; i < n; i++) {
    o[i] = 0
  }
  o[0] = total
  gen_tab(n - 1)
  printf("正確なP値は %g\n\n", w2)
  printf("査察した表の数は %g\n", count)
  printf("全ての査察におけるP値の和は = %g\n", wt)
  printf("注:これが1でないときは何か変なことが起きたことを意味する。\n")
}

function decomp(data, a)
{
  var i, j, n = 0
  for (i = 0; i < data.length; i++) {
    for (j = 0; j < data[i].length; j++) {
      a[n++] = data[i][j]
    }
  }
  return n
}

function calc(obs, the)
{
  var n1, n2, o1, e1
  o = new Array()
  e = new Array()
  p = new Array(n)
  if ((o1 = getdata(obs, -1)) != false && (e1 = getdata(the, -1)) != false) {
    n1 = decomp(o1, o)
    n2 = decomp(e1, e)
    if (n1 != n2 || n1 <= 1) {
      printf("このデータについては検定できません\n")
      sep2(40)
      return
    }
    n = n1
    fitness()
  }
  sep2(40)
}
//-->
</script>
</head>

<body bgcolor="#ffffff">
<font size="+2"><b>適合度の検定(Exact test)</b></font> <a  href="src/fitness-exact.html"><img src="png/src.png" width=35 height=11 alt="src" align=top></a>     Last modified: Jun 01, 2006<hr noshade><p>
<font color="#ff0000" size="+2">以下のプログラムのサポートは終了しました。自己責任でお使い下さい。</font>

<form name=Result>
<script language="JavaScript">
<!--
//-->JavaScript がサポートされていないブラウザですか?
</script>
適合度検定(Exact test)を行う。<br>
<img src="../gra/button3.png" width=9 height=9 alt="・"> <a href="../lecture/GoodnessOfFitness/nominalscale.html">手法の解説</a> <img src="../gra/button3.png" width=9 height=9 alt="・"> <a href="exa/fitness-exact.html">使用法</a>
<hr>

観察度数 <input name="o" value="" size=80><br>
理論度数 <input name="e" value="" size=80><br>
<table><tr>
<td><input type="button" name="calcurate" value="計算開始" onClick="calc(this.form.o.value,this.form.e.value)">  </td>
<td><input type="button" name="clear" value="入力欄クリア" onClick="this.form.o.value=this.form.e.value=''">  </td>
<td><input type="button" name="clear" value="出力欄クリア" onClick="this.form.result.value=''"></td>
</tr></table>
出力欄<br><textarea name="result" rows=24 cols=80></textarea>
</form>

<p><hr noshade>
<img src="../gra/button3.png" width=9 height=9 alt="・"> <A HREF="javascript:history.go(-1)">直前のページへ戻る</A>  <img src="../gra/button3.png" width=9 height=9 alt="・"> <a href="../mail.html">E-mail to Shigenobu AOKI</a>
<p><IMG SRC="../gra/ume5.png" width=121 height=37 ALT="Made with Macintosh">
</body>
</html>

サブ io.js   Last modified: Mar 25, 2004
サブ gxp.js   Last modified: Mar 25, 2004
サブ xxp.js   Last modified: Mar 25, 2004

・ 直前のページへ戻る  ・ E-mail to Shigenobu AOKI

Made with Macintosh