Plan
- 빈도 기반 회귀해서 기울기를 보자.
- 값을 보자. 어떠한 코퍼스가 더 잘 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은 모델 전체의 설명력을 보여줌)
/KE_reg.png)
/SUBTLEX_reg.png)
/KE_z_reg.png)
/SUBTLEX_z_reg.png)