def format_eff_robust(df, x_axis, y_axis_fit, transform): df_line = df[df.use_for_line_fit == True] x_acc_line_trans = transform_acc(df_line[x_axis], transform) y_acc_line_trans = transform_acc(df_line[y_axis_fit], transform) lin_fit = scipy.stats.linregress(x_acc_line_trans, y_acc_line_trans) intercept, slope = lin_fit[1], lin_fit[0] lin_fit_ys_trans = transform_acc(df[x_axis], transform) * slope + intercept lin_fit_ys = inv_transform_acc(lin_fit_ys_trans, transform) df['eff_robust'] = df[y_axis_fit] - lin_fit_ys return df
def format_eff_robust(df, x_axis, y_axis, x_axis_fit, y_axis_fit, transform): df_line = df[df.use_for_line_fit == True] if (df_line[y_axis_fit] == 0).any(): pivot = df_line[df_line[y_axis_fit] == 0][x_axis_fit][0] df_line1 = df_line[df_line[x_axis_fit] < pivot] x_acc_line_trans = transform_acc(df_line1[x_axis_fit], transform) y_acc_line_trans = transform_acc(df_line1[y_axis_fit], transform) lin_fit = scipy.stats.linregress(x_acc_line_trans, y_acc_line_trans) intercept, slope = lin_fit[1], lin_fit[0] lin_fit_ys_trans = transform_acc(df[x_axis_fit], transform) * slope + intercept lin_fit_ys = inv_transform_acc(lin_fit_ys_trans, transform) df['eff_robust_y'] = df[y_axis_fit] - lin_fit_ys df_line2 = df_line[df_line[x_axis_fit] > pivot] x_acc_line_trans = transform_acc(df_line2[x_axis_fit], transform) y_acc_line_trans = transform_acc(df_line2[y_axis_fit], transform) lin_fit = scipy.stats.linregress(x_acc_line_trans, y_acc_line_trans) intercept, slope = lin_fit[1], lin_fit[0] lin_fit_ys_trans = transform_acc(df[x_axis_fit], transform) * slope + intercept lin_fit_ys = inv_transform_acc(lin_fit_ys_trans, transform) df.loc[df[x_axis_fit] > pivot, 'eff_robust_y'] = (df[y_axis_fit] - lin_fit_ys)[df[x_axis_fit] > pivot] else: x_acc_line_trans = transform_acc(df_line[x_axis_fit], transform) y_acc_line_trans = transform_acc(df_line[y_axis_fit], transform) lin_fit = scipy.stats.linregress(x_acc_line_trans, y_acc_line_trans) intercept, slope = lin_fit[1], lin_fit[0] lin_fit_ys_trans = transform_acc(df[x_axis_fit], transform) * slope + intercept lin_fit_ys = inv_transform_acc(lin_fit_ys_trans, transform) df['eff_robust_y'] = df[y_axis_fit] - lin_fit_ys x_acc_line_trans = transform_acc(df_line[x_axis], transform) y_acc_line_trans = transform_acc(df_line[y_axis], transform) lin_fit = scipy.stats.linregress(x_acc_line_trans, y_acc_line_trans) intercept, slope = lin_fit[1], lin_fit[0] lin_fit_ys_trans = transform_acc(df[x_axis], transform) * slope + intercept lin_fit_ys = inv_transform_acc(lin_fit_ys_trans, transform) df['eff_robust_x'] = df[y_axis] - lin_fit_ys return df
def calc_eff_robust_corr(df, transform, x_axis, y_axis, x_axis_fit, y_axis_fit): df = df.copy() df_line = df[df.use_for_line_fit == True] if (df_line[y_axis_fit] == 0).any(): pivot = df_line[df_line[y_axis_fit] == 0][x_axis_fit][0] df_line1 = df_line[df_line[x_axis_fit] < pivot] x_acc_line_trans = transform_acc(df_line1[x_axis_fit], transform) y_acc_line_trans = transform_acc(df_line1[y_axis_fit], transform) lin_fit = scipy.stats.linregress(x_acc_line_trans, y_acc_line_trans) intercept, slope = lin_fit[1], lin_fit[0] lin_fit_ys_trans = transform_acc(df[x_axis_fit], transform) * slope + intercept lin_fit_ys = inv_transform_acc(lin_fit_ys_trans, transform) df['eff_robust_y'] = df[y_axis_fit] - lin_fit_ys df_line2 = df_line[df_line[x_axis_fit] > pivot] x_acc_line_trans = transform_acc(df_line2[x_axis_fit], transform) y_acc_line_trans = transform_acc(df_line2[y_axis_fit], transform) lin_fit = scipy.stats.linregress(x_acc_line_trans, y_acc_line_trans) intercept, slope = lin_fit[1], lin_fit[0] lin_fit_ys_trans = transform_acc(df[x_axis_fit], transform) * slope + intercept lin_fit_ys = inv_transform_acc(lin_fit_ys_trans, transform) df.loc[df[x_axis_fit] > pivot, 'eff_robust_y'] = (df[y_axis_fit] - lin_fit_ys)[df[x_axis_fit] > pivot] else: x_acc_line_trans = transform_acc(df_line[x_axis_fit], transform) y_acc_line_trans = transform_acc(df_line[y_axis_fit], transform) lin_fit = scipy.stats.linregress(x_acc_line_trans, y_acc_line_trans) intercept, slope = lin_fit[1], lin_fit[0] lin_fit_ys_trans = transform_acc(df[x_axis_fit], transform) * slope + intercept lin_fit_ys = inv_transform_acc(lin_fit_ys_trans, transform) df['eff_robust_y'] = df[y_axis_fit] - lin_fit_ys df2 = df[[x_axis, y_axis, 'use_for_line_fit']].dropna() df_line2 = df2[df2.use_for_line_fit == True] x_acc_line_trans = transform_acc(df_line2[x_axis], transform) y_acc_line_trans = transform_acc(df_line2[y_axis], transform) lin_fit = scipy.stats.linregress(x_acc_line_trans, y_acc_line_trans) intercept, slope = lin_fit[1], lin_fit[0] lin_fit_ys_trans = transform_acc(df2[x_axis], transform) * slope + intercept lin_fit_ys = inv_transform_acc(lin_fit_ys_trans, transform) df.loc[df2.index, 'eff_robust_x'] = df2[y_axis] - lin_fit_ys df = df[df.show_in_plot][['eff_robust_x', 'eff_robust_y']].dropna() return scipy.stats.pearsonr(df['eff_robust_x'], df['eff_robust_y'])[0]