calc_stanine {lazy.dnc} | R Documentation |
個人の得点からスタナインを計算
calc_stanine(data, bpU = NULL, res_gs = NULL, score_name = "score")
data |
個人の得点:ベクトルまたはデータフレーム |
bpU |
各段階の上限: 長さが段階数のベクトル |
res_gs |
get_stanine の出力 |
score_name |
data の中の個人の得点を含むカラムの名前 |
この関数は以下の処理をしている。
breaksU=c(-99, bpU); ncat=length(bpU) s9 <- as.numeric( cut( data[,score_name], breaksU, labels=1:ncat ) )
データフレーム
スタナインは s9 という名称のカラムとして出力される。
# データの生成
set.seed(1701)
n <- 100
# 満点の指定
# maxscore <- 200
maxscore <- 100
# 正規分布乱数
score_raw <- round( rnorm( n,maxscore/2, 0.133*maxscore ) )
# データを区間 [0,maxscore] に入れる。
if( any(score_raw < 0 | score_raw > maxscore) )
score_raw <- score_raw[-which(score_raw < 0 | score_raw > maxscore)]
# 欠測得点の生成
locz <- sample(0:maxscore,10, replace=FALSE)
score_raw <- score_raw[-locz]
# n に足りない部分を一様乱数で補う。
if( length(score_raw) < n )
score_raw <- c( score_raw, round( runif(n-length(score_raw)
, 0, maxscore) ) )
# 度数分布の計算
freq <- table(score_raw)
score <- as.numeric(names(freq))
freq <- as.numeric(unclass(freq))
# 度数分布の欠測部分の補完
score0 <- numeric(maxscore+1)
score0[score+1] <- score
freq0 <- numeric(maxscore+1)
freq0[score+1] <- freq
freq <- freq0
score <- score0
# 素データからの計算
st2 <- get_stanine( score_raw, print=1, plot=0 )
bp2 <- st2$bp_raw
ctable2 <- st2$ctable
# 度数分布からの計算
st1 <- get_stanine( score,freq, print=1, plot=0 )
bp1 <- st1$bp_raw
ctable1 <- st1$ctable
# 結果の比較(同一になるはず)
s91 <- calc_stanine( score_raw, bpU=st1$bp[,2] )$s9
max(abs(( s91-st2$ctable_raw$s9 )))