素点を新しい得点範囲へ変換する計算ツール
この計算ツールは、観測された最小値と最大値の間にある素点を、指定した新しい得点範囲へ換算します。観測最小値は変換先の最低値に、観測最大値は最高値に対応し、その間の得点は相対的な位置を保ちます。順位や得点間の比例関係を変えずに、成績、試験、評価基準、過去の帳票を共通の尺度へそろえたい場合に適しています。5つの数値と丸め精度を入力すると、換算後の得点と正規化位置を確認できます。
無料で実行
線形換算で維持されるもの
線形換算は得点範囲の数値表現だけを変え、相対的な位置を維持します。素点が観測最小値と最大値のちょうど中間なら、換算後の得点も変換先範囲の中央になります。4分の1の位置なら変換先でも4分の1となり、ほかの割合でも同様です。そのため、順位、重み、難易度を変えるのではなく、説明しやすい形で尺度だけを変更する場合に向いています。丸める前には、観測最小値が変換先の最低値へ、観測最大値が最高値へ正確に対応します。中間の得点順序は変わらず、同じ大きさの素点差は換算後も同じ大きさの差になります。この方法は成績曲線を作成せず、受験者を集団と比較せず、達成基準を推定しません。同じ位置を別の数値範囲で表すだけなので、前提を明確に説明して再現できます。
範囲の入力方法と結果の読み方
最初に換算対象の素点を入力し、元の尺度を定める観測最小値と観測最大値を指定してください。両端は異なる値である必要があり、最大値は最小値より大きくなければなりません。続いて、変換先の最低値と最高値も昇順で入力します。素点は両端を含む観測範囲内に限られます。範囲外を拒否することで、意図しない外挿を通常の換算と取り違えることを防ぎます。結果には換算得点と正規化位置が表示されます。正規化位置の0は観測最小値、1は観測最大値を表し、その間の値は素点の比例的な位置を示します。精度では、小数なしから小数第12位まで表示桁数を選べます。入力値も結果に含まれるため、自動処理でも使用した範囲を明確な監査記録として残せます。
この式が適する場面と適さない場面
2つの数値尺度が同じ連続量を表し、線形変換が必要な場合にご利用ください。授業の点数を帳票用の範囲へ換算する場合、固定形式の試験結果を校内表示範囲へ合わせる場合、過去の得点項目を異なる両端値のシステムへ移行する場合などが該当します。多数の記録へ適用する前に、観測両端が規程上の端点であり、不完全な標本における一時的な最小値と最大値ではないことをご確認ください。標本依存の端点は、新しい結果の追加で変わる可能性があります。線形換算は、異なる試験形式の等化、パーセンタイル、標準得点、項目反応モデル、成績曲線、合否基準設定の代わりにはなりません。可能であれば丸め前の元得点を保存し、報告する結果だけを丸めることで、反復処理による誤差を抑えられます。
活用例
点数を帳票用尺度へ変換
固定された点数範囲を、成績表や報告テンプレートで必要な数値範囲へ合わせます。
過去の評価項目を正規化
各結果の順序と比例的位置を保ちながら、過去の得点を新しい範囲で表します。
透明性の高い換算を記録
換算値、正規化位置、両端値、精度を返し、再現可能な監査記録を作成します。
よくある質問
どのような式を使用しますか?
(素点 − 観測最小値)÷(観測最大値 − 観測最小値)で位置を求め、その位置を変換先範囲へ適用します。
観測最小値は必ず変換先の最低値になりますか?
はい。指定した丸めを行う前に、観測された2つの端点が対応する変換先端点へ正確に割り当てられます。
観測範囲外の素点を入力できますか?
いいえ。外挿を範囲内の通常換算と誤認しないように、範囲外の得点は受け付けません。
成績を曲線化する方法と同じですか?
異なります。曲線化には分布や規程が関係しますが、線形換算では元と変換先の端点を2つずつ使用するだけです。
精度はどのように選べばよいですか?
帳票や後続計算に必要な小数桁数を選び、さらに高い精度が必要な場合は元の素点を別に保存してください。
料金はいくらですか?
ブラウザーでは無料でご利用いただけます。APIリクエストは1回あたり$0.002です。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/edu/scale-raw-score \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"raw_score":42,"observed_min":10,"observed_max":50,"target_lowest":0,"target_highest":100}'const res = await fetch("https://api.kit.forhosting.com/edu/scale-raw-score", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"raw_score": 42,
"observed_min": 10,
"observed_max": 50,
"target_lowest": 0,
"target_highest": 100
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/edu/scale-raw-score",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"raw_score": 42,
"observed_min": 10,
"observed_max": 50,
"target_lowest": 0,
"target_highest": 100
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/edu/scale-raw-score", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"raw_score":42,"observed_min":10,"observed_max":50,"target_lowest":0,"target_highest":100}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"raw_score":42,"observed_min":10,"observed_max":50,"target_lowest":0,"target_highest":100}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/edu/scale-raw-score", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"raw_score": 42,
"observed_min": 10,
"observed_max": 50,
"target_lowest": 0,
"target_highest": 100
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "edu.scale_raw_score",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |