Plan

  1. 빈도 기반 회귀해서 기울기를 보자.
  2. 값을 보자. 어떠한 코퍼스가 더 잘 L2 english learner의 데이터 분산을 잘 설명하는지 비교해보자.

현재 : 51명

Frequency Slope


Multi column

KE

# gender 차이?
formula = 'log_rt ~ Zipf_KE' # regression formula
vc_formula = { # variance component formula
	"word": "0 + C(Stimuli)"
	}
re_formula = '~1' # random slope formula 
 
model = MixedLM.from_formula(formula,
	data=KE_cumulative_df,
	groups='participant_id',
	vc_formula=vc_formula,
	re_formula=re_formula
	).fit()
	
model.summary()

SUBTLEX

# gender 차이?
formula = 'log_rt ~ Zipf_SUBTLEX' # regression formula
vc_formula = { # variance component formula
	"word": "0 + C(Stimuli)"
	}
re_formula = '~1' # random slope formula 
 
model = MixedLM.from_formula(formula,
	data=SUBTLEX_cumulative_df,
	groups='participant_id',
	vc_formula=vc_formula,
	re_formula=re_formula
	).fit()
	
model.summary()

Summary

단어 자극에 대한 분산만 따로 intercept 만들어줘서 통제하고, 회귀해보면,
둘 다 유의미하게 통계적으로 기울기가 잡히고,

  • KE가 SUBTLEX 보다 작은 기울기를 가진다.

Question

Zipf scaling만으로 코퍼스 간 규모 차이가 회귀에 미치는 영향을 다 배제 한 것인가? 별도의 z-scoring은 하지 않아도 되는 것인가? → effect size를 보기 위해선.


Question

Effect Size
“그 효과가 실제로 얼마나 강한가?”

  • Cohen’s d
  • Hedges g
  • Glass Δ

p-val
“그 효과가 재현되나?”

Important

현재 task는 rt prediction이라, 사용될 수 있는 effect size를 나타내는 지표로는,

  • standardized
  • Cohen’s
  • ,

Frequency Effect Size(standardized )


Summary

물론, Zipf scoring을 하면 raw frequency보다는 분포가 덜 skewed될 텐데, 이게 빈도 분포의 범위가 다른 걸 해결해주진 않는다.

  • log를 씌워도 빈도 자체의 range는 다르지.
    일단 Z-score normalization을 먼저 하고 다시 보자.
from scipy.stats import zscore
 
SUBTLEX_cumulative_df['Zipf_SUBTLEX_z'] = zscore(SUBTLEX_cumulative_df['Zipf_SUBTLEX'])
SUBTLEX_cumulative_df['Zipf_KE_z'] = zscore(SUBTLEX_cumulative_df['Zipf_KE'])
 
KE_cumulative_df['Zipf_SUBTLEX_z'] = zscore(KE_cumulative_df['Zipf_SUBTLEX'])
KE_cumulative_df['Zipf_KE_z'] = zscore(KE_cumulative_df['Zipf_KE'])

Multi column

KE

# gender 차이?
formula = 'log_rt ~ Zipf_KE_z' # regression formula
vc_formula = { # variance component formula
	"word": "0 + C(Stimuli)"
	}
re_formula = '~1' # random slope formula 
 
model = MixedLM.from_formula(formula,
	data=KE_cumulative_df,
	groups='participant_id',
	vc_formula=vc_formula,
	re_formula=re_formula
	).fit()
	
model.summary()

SUBTLEX

# gender 차이?
formula = 'log_rt ~ Zipf_SUBTLEX_z' # regression formula
vc_formula = { # variance component formula
	"word": "0 + C(Stimuli)"
	}
re_formula = '~1' # random slope formula 
 
model = MixedLM.from_formula(formula,
	data=SUBTLEX_cumulative_df,
	groups='participant_id',
	vc_formula=vc_formula,
	re_formula=re_formula
	).fit()
	
model.summary()

Summary

-0.005(KE) vs -0.019(SUBTLEX) 약 4배 차이.

아래는 아직 공부 중인 내용들,,,

conditional, marginal


4) MixedLM에서의 R²: marginal vs conditional (Nakagawa & Schielzeth, 2013)

  • Marginal R^2 (R^2_m): 고정효과(fixed effects)만이 설명하는 분산 비율.

    R^2_m = \frac{Var(\text{fixed})}{Var(\text{fixed}) + Var(\text{random}) + Var(\varepsilon)}

  • Conditional R^2 (R^2_c): 고정효과 + 랜덤효과(전체 모델)가 설명하는 분산 비율.

    R^2_c = \frac{Var(\text{fixed}) + Var(\text{random})}{Var(\text{fixed}) + Var(\text{random}) + Var(\varepsilon)}

  • 여기서

    • Var(\text{fixed}) = 모델의 선형 예측값 X\beta의 분산 (데이터 전체에서의 분산)

    • Var(\text{random}) = 모든 랜덤효과 분산의 합 (참가자, item 등)

    • Var(\varepsilon) = 잔차(Residual) 분산 (residual variance, scale)

권장: 혼합모형을 쓰면 marginal/conditional R²를 함께 보고하라. (marginal은 fixed predictors의 순수한 “effect size”를, conditional은 모델 전체의 설명력을 보여줌)