メイン kappa0.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="gxp.js">document.write("gxp.js ファイルが見つかりません??<br>")</script>
<script src="pxg.js">document.write("pxg.js ファイルが見つかりません??<br>")</script>
<script src="io.js">document.write("io.js ファイルが見つかりません??<br>")</script>
<script language="JavaScript">
<!--
function zfi(w, i)
{
var ww = (""+i).length
ww = ww > w ? 0 : w-ww
return "0000000000000".substring(0, ww)+i
}
function fname(str, i)
{
return str+zfi(2, i+1)
}
function outmat1(r, n, str)
{
var j, k
printf("\n%s\n\n ", str)
for (j = 0; j < n; j++) {
printf("%6s", fname("B", j))
}
printf(" 合計\n")
for (j = 0; j <= n; j++) {
printf("%5s", j == n ? "合計" : fname("A", j))
for (k = 0; k <= n; k++) {
printf("%5i ", r[j][k])
}
printf("\n")
}
}
function outmat2(r, n, str)
{
var j, k
printf("\n%s\n\n ", str)
for (j = 0; j < n; j++) {
printf("%6s", fname("B", j))
}
printf("\n")
for (j = 0; j < n; j++) {
printf("%5s", fname("A", j))
for (k = 0; k < n; k++) {
printf("%5.1f ", r[j][k])
}
printf("\n")
}
}
function cl(alpha, kappa, sigma_kappa)
{
var z
z = pxg(alpha/2)
printf("カッパ統計量の %i%% 信頼区間 [%g, %g]\n(信頼区間の計算に使われた標準誤差 = %g)\n", 100*(1-alpha), kappa-z*sigma_kappa, kappa+z*sigma_kappa, sigma_kappa)
}
function outresults(kappa, sigma_kappa0, sigma_kappa)
{
var p, z
z = kappa/sigma_kappa0
p = gxp(Math.abs(z))*2
printf("\カッパ統計量 κ = %g 標準誤差 = %g\nκ= 0 の検定 z = %g P 値 = %g\n\n", kappa, sigma_kappa0, z, p)
cl(0.05, kappa, sigma_kappa)
cl(0.01, kappa, sigma_kappa)
}
function calc(data_string)
{
var data, nr, nc, n, i, j, zf, e, po, pe, kappa, sigma_kappa, sigma_kappa0, qow, qoww, qew, qeww
var r, w, wt
if ((data = getdata(data_string, 0)) != false) {
nr = data.length
nc = data[0].length
if (nr == nc) {
wt = false
}
else if (nr == 2*nc) {
wt = true
}
else {
printf("正方行列でない場合には,別のプログラムを使ってください")
return
}
r = makeMatrix(nc+1, nc+1)
e = makeMatrix(nc, nc)
for (i = 0; i <= nc; i++) {
for (j = 0; j <= nc; j++) {
r[i][j] = 0
}
}
for (i = 0; i < nc; i++) {
for (j = 0; j < nc; j++) {
r[i][j] = data[i][j]
}
}
for (i = 0; i < nc; i++) {
for (j = 0; j < nc; j++) {
r[i][nc] += r[i][j]
}
for (j = 0; j <= nc; j++) {
r[nc][j] += r[i][j]
}
}
outmat1(r, nc, "★ 入力された分割表 ★")
if (wt == true) {
zf = false
w = makeMatrix(nc, nc)
for (i = 0; i < nc; i++) {
for (j = 0; j < nc; j++) {
w[i][j] = data[nc+i][j]
}
if (w[i][i] != 0) {
zf = true
w[i][i] = 0
}
}
outmat2(w, nc, "★ 入力された重み ★")
if (zf == true) {
printf("\n\n重みの対角成分に 0 以外の値が指定されていましたが,それは 0 に書き換えました。\n\n")
}
}
e = makeMatrix(nc, nc)
po = pe = 0
n = r[nc][nc]
for (i = 0; i < nc; i++) {
for (j = 0; j < nc; j++) {
e[i][j] = r[nc][j]*r[i][nc]/n
}
po += r[i][i]
pe += e[i][i]
}
po /= n
pe /= n
kappa = (po-pe)/(1-pe)
sigma_kappa = Math.sqrt(po*(1-po)/n/Math.pow(1-pe, 2))
sigma_kappa0 = Math.sqrt(pe/n/(1-pe))
if (wt == true) {
printf("\n★ 重み付けしない場合 ★\n\n")
}
outresults(kappa, sigma_kappa0, sigma_kappa)
if (wt == true) {
qow = qoww = qew = qeww = 0
for (i = 0; i < nc; i++) {
for (j = 0; j < nc; j++) {
qow += w[i][j]*r[i][j]
qoww += w[i][j]*w[i][j]*r[i][j]
qew += w[i][j]*e[i][j]
qeww += w[i][j]*w[i][j]*e[i][j]
}
}
qow /= n
qoww /= n
qew /= n
qeww /= n
kappa = 1-qow/qew
sigma_kappa = Math.sqrt((qoww-qow*qow)/(n*qew*qew))
sigma_kappa0 = Math.sqrt((qeww-qew*qew)/(n*qew*qew))
printf("\n★ 重み付けした場合 ★\n\n")
outresults(kappa, sigma_kappa0, sigma_kappa)
}
}
sep(40)
}
//-->
</script>
</head>
<body bgcolor="#ffffff">
<font size="+2"><b>κ統計量(正方行列の場合)</b></font> <a href="src/kappa0.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>
<input type="button" name="calcurate" value="計算開始" onClick="calc(this.form.data.value)">
<input type="button" name="clear" value="入力欄クリア" onClick="this.form.data.value=''">
<input type="button" name="clear" value="出力欄クリア" onClick="this.form.result.value=''">
<img src="../gra/button3.png" width=9 height=9 alt="・"> <A HREF="exa/kappa0.html">使用法</a><p>
入力欄(分割表(および,重み)を<a href="exa/kugirimoji.html">区切り文字</a>で区切って,行単位に入力)<br><textarea name="data" ROWS=10 COLS=80></textarea><p>
出力欄<br><textarea name="result" ROWS=30 COLS=80></textarea>
</form>
<p><hr noshade>
<img src="../gra/button3.png" width=9 height=9 alt="・"> <A HREF="../lecture/Kappa/kappa.html">手法の解説</a><br>
<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><center><IMG SRC="../gra/ume5.png" width=121 height=37 ALT="Made with Macintosh"></center>
</body>
</html>
サブ gxp.js Last modified: Mar 25, 2004
サブ pxg.js Last modified: Mar 25, 2004
サブ io.js Last modified: Mar 25, 2004
直前のページへ戻る E-mail to Shigenobu AOKI