3人以上の評価者間の一致度(Fleissのκ係数)
Fleissのκ係数
#データ読み込み library(readr) dat1 <- read_csv("csv1.csv") #欠損値除去 dat1=na.omit(dat1) #変数型の変更 dat1$Mscore=as.numeric(dat1$Mscore) dat1$Msitu=as.numeric(dat1$Msitu) dat1$Nscore=as.numeric(dat1$Nscore) dat1$Nsitu=as.numeric(dat1$Nsitu) dat1$Tscore=as.numeric(dat1$Tscore) dat1$Tsitu=as.numeric(dat1$Tsitu) #データセット作成 dat_score=subset(dat1,select = c("Mscore","Nscore","Tscore")) #扱われ方 dat_situ=subset(dat1,select = c("Msitu","Nsitu","Tsitu")) #場面 #α係数 library(psych) # psych パッケージの読み込み alpha(dat_score) #クロンバックのアルファ係数 alpha(dat_situ) #Fleissのκ係数 install.packages("irr", dependencies = TRUE) library(irr) kappam.fleiss(dat_score) kappam.fleiss(dat_situ)
#基準#####################################
#< 0 Poor agreement
#0.01 ??? 0.20 Slight agreement
#0.21 ??? 0.40 Fair agreement
#0.41 ??? 0.60 Moderate agreement
#0.61 ??? 0.80 Substantial agreement
#0.81 ??? 1.00 Almost perfect agreement
##########################################
対応のある分散分析(1要因)forベイズ
対応のある分散分析(1要因)
データの読み込み
#作業ディレクトリの設定(適宜変更) setwd("C:/Users/turid/OneDrive/ドキュメント") #データ読み込み library(readr) SNFC_1 <- read_csv("SNFC.csv") library(rstan) #パッケージrstanの呼び出し dat1=na.omit(SNFC_1) x <- subset(dat1,select = c("kakusan","tokushu","tankyugouri")) n <- nrow(x) a=3 data <-list(N = n, X = x)
stanコード格納
stancode <- " data{ int<lower=0> N; vector[3] X[N]; } parameters{ vector[3] mu; real<lower=0> sig[3]; real<lower=-1,upper=1> rho; } transformed parameters{ matrix[3,3] Sigma; Sigma[1,1] = sig[1]*sig[1]; Sigma[2,2] = sig[2]*sig[2]; Sigma[3,3] = sig[3]*sig[3]; Sigma[1,2] = sig[1]*sig[2]*rho; Sigma[1,3] = sig[1]*sig[3]*rho; Sigma[2,3] = sig[2]*sig[3]*rho; Sigma[2,1] = Sigma[1,2]; Sigma[3,1] = Sigma[1,3]; Sigma[3,2] = Sigma[2,3]; } model{ X ~ multi_normal(mu, Sigma); rho ~ uniform(-1,1); sig ~ cauchy(0,2.5); } generated quantities{ real delta21; real delta31; real delta32; real d_overC1; real d_overC2; real d_overC3; delta21 = mu[2] - mu[1]; delta31 = mu[3] - mu[1]; delta32 = mu[3] - mu[2]; d_overC1 = (delta21>0? 1:0); d_overC2 = (delta31>0? 1:0); d_overC3 = (delta32>0? 1:0); } "
rstan_options(auto_write = TRUE) options(mc.cores = parallel::detectCores()) fit <- stan(model_code = stancode, iter=400, warmup=100, chains=4, data = data) print(fit, digits_summary = 2)
連言命題が正しい確率
df<-data.frame(extract(fit)) t<-sum((df$mu.3 -df$mu.1 > 0) & (df$mu.3 -df$mu.2 > 0) =="TRUE") round(t/ nrow(df),3) t<-sum((df$mu.1 -df$mu.3 > 0) & (df$mu.1 -df$mu.2 > 0) =="TRUE") round(t/ nrow(df),3)
特定のパラメーターだけプロット
library(ggmcmc) df_param <- ggs(fit) df_param %>% { print(class(.)) dplyr::tbl_df(.) } fit_param_mu <- df_param %>% dplyr::filter(grepl("^mu", Parameter)) ggs_caterpillar(fit_param_mu)
頻度論的な統計手法のオルタナティブ
通常の因子分析
- KMOとMSAの確認 サンプリングの適切性を検討する
- 因子数の検討
- 平行分析(通常版/ポリコリック相関行列版)
- スクリープロット
- 固有値
- 探索的因子分析
- 因子数1の検討(通常版/ポリコリック相関行列版)
- 信頼性係数の算出(アルファとオメガ)
- 確認的因子分析
- 因子得点(平均)の作成
- 因子間の相関係数
KMOとMSAの確認 サンプリングの適切性を検討する
kmo <- function(x) # データ行列またはデータフレーム { x <- subset(x, complete.cases(x)) # 欠損値を持つケースを除く r <- cor(x) # 相関係数行列 r2 <- r^2 # 相関係数行列の要素の二乗 i <- solve(r) # 相関係数行列の逆行列 d <- diag(i) # 対角成分 p2 <- (-i/sqrt(outer(d, d)))^2 # 偏相関係数行列の要素の二乗 diag(r2) <- diag(p2) <- 0 # 対角成分は計算には用いない KMO <- sum(r2)/(sum(r2)+sum(p2)) MSA <- colSums(r2)/(colSums(r2)+colSums(p2)) return(list(KMO=KMO, MSA=MSA)) } kmo(dat) #0.8超えてればOK
因子数の検討
平行分析(通常版/ポリコリック相関行列版)
fa.parallel(dat) fa.parallel.poly(dat)
データの読み込みと整形
データの読み込みと整形~標準編~
データの読み込み
#作業ディレクトリの設定(適宜変更) setwd("C:/Users/turid/OneDrive/ドキュメント/R") #データ読み込み library(readr) SNFC_1 <- read_csv("SNFC_5.csv") View(SNFC_1)
データセットの作成と確認
#データセットの作成 dat <- data.frame(SNFC_1[,8:22]) #8列目~22列目の変数を取り出し #要約統計量を確認 summary(dat)
データの読み込みと整形~大規模データ編~
データの読み込み
library(data.table) dat = fread("CY6_MS_CMB_STU_COG.csv")
データセットの作成
japan=subset(dat,CNTRYID=="392",c(CNTRYID,CNT,CNTSCHID,CNTSTUID))