SyntheticControlMethods icon indicating copy to clipboard operation
SyntheticControlMethods copied to clipboard

run code dsc = DiffSynth( data, …… n_optim=100,) raise “TypeError: incompatible index of inserted column with frame index”

Open PG408 opened this issue 1 year ago • 1 comments

image

PG408 avatar Oct 27 '24 12:10 PG408

I seem to have found a solution; it is necessary to modify the difference_data function under the DiffSynth class in main.py. The code is as follows.

        #Compute difference of outcome variable
        temp = modified_dataset.groupby(data.id)[data.outcome_var]
        temp = temp.apply(lambda unit: unit.interpolate(method='linear', limit_direction="both")).diff()
        temp = pd.DataFrame(temp).reset_index()
       
        temp.columns = [data.id, 'index', data.outcome_var]
        temp = temp.set_index('index').sort_index()
        
        modified_dataset[data.outcome_var] = temp[data.outcome_var]
        # modified_dataset[data.outcome_var] = modified_dataset.groupby(data.id)[data.outcome_var].apply(
        #                                     lambda unit: unit.interpolate(method='linear', limit_direction="both")).diff()
        #For covariates
        for col in data.covariates:
            #Fill in missing values using unitwise linear interpolation
            temp2 = modified_dataset.groupby(data.id)[col]
            temp2 = temp2.apply(lambda unit: unit.interpolate(method='linear', limit_direction="both"))
            temp2 = pd.DataFrame(temp2).reset_index()
            temp2.columns = [data.id, 'index', col]
            temp2 = temp2.set_index('index').sort_index()
            modified_dataset[col] = temp2[col]
            # modified_dataset[col] = modified_dataset.groupby(data.id)[col].apply(
            #                         lambda unit: unit.interpolate(method='linear', limit_direction="both"))
            

PG408 avatar Oct 27 '24 14:10 PG408