Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ## Calculate F-Fraction
- See Keppel, p353
- $$
- [A] = \frac{\sum{A^2_j}}{n} = n\sum{\overline{Y}^2_{A}}
- $$
- $$
- [Y] = \sum{Y^2_{ij}}
- $$
- $$
- [S] = \frac{\sum{S^2_i}}{a} = a\sum{\overline{Y}^2_S}
- $$
- $$
- [T] = \frac{T^2}{an} = an\overline{Y}^2_T
- $$
- Source df SS MS F
- ======================================================================
- A a-1 [A] - [T] SS_AA / df_A MS_A / MS_(A x S)
- S n-1 [S] - [T] SS_S / df_S
- A x S (a-1)(n-1) [Y]-[A]-[S]+[T] SS_AxS / df_AxS
- ----------------------------------------------------------------------
- Total an-1 [Y] - [T]
- $$
- \text{with } F_A = \frac{MS_A}{MS_{A \times S}}
- $$
- n = float(len(df))
- a = float(len(df.columns))
- A_raw = df.sum().apply(lambda v: v ** 2).sum() / n
- S_raw = df.sum(axis=1).apply(lambda v: v ** 2).sum() / a
- Y_raw = df.apply(lambda v: v ** 2).sum().sum()
- T_raw = df.sum().sum() ** 2 / (a*n)
- A = A_raw - T_raw
- S = S_raw - T_raw
- AxS = Y_raw - A_raw - S_raw + T_raw
- Total = Y_raw - T_raw
- df_A = a - 1
- df_S = n - 1
- df_AxS = (a-1)*(n-1)
- df_total = (a*n)-1
- MS_A = (A / df_A)
- MS_AxS = (AxS / df_AxS)
- F_emp = MS_A / MS_AxS
- from scipy import stats
- f_dist = stats.f(df_A, df_AxS, loc=0, scale=1)
- F_krit = f_dist.ppf(.95)
- p = f_dist.sf(F_emp)
- print 'F(%s, %s)= %s, p=%s' % (df_A, df_AxS, F_emp, p)
- print F_krit
- # Results
- F(2.0, 142.0)= 4.3311275401, p=0.0149332913263
- 3.05983068862
Advertisement
Add Comment
Please, Sign In to add comment