Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 1 addition & 5 deletions src/main/java/simpaths/data/Parameters.java
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These changes all look spurious

Original file line number Diff line number Diff line change
Expand Up @@ -405,7 +405,7 @@ else if(numberOfChildren <= 5) {
//Uprating factor
private static boolean flagDefaultToTimeSeriesAverages;
private static Double averageSavingReturns, averageDebtCostLow, averageDebtCostHigh;
private static MultiKeyCoefficientMap upratingIndexMapRealGDP, mapRealGDPperCapita, upratingIndexMapInflation, socialCareProvisionTimeAdjustment,
private static MultiKeyCoefficientMap upratingIndexMapRealGDP, mapRealGDPperCapita, upratingIndexMapInflation,
partnershipTimeAdjustment, studentsTimeAdjustment, fertilityTimeAdjustment,
utilityTimeAdjustmentSingleMales, utilityTimeAdjustmentACMales, utilityTimeAdjustmentSingleFemales, utilityTimeAdjustmentACFemales,
utilityTimeAdjustmentCouples, utilityTimeAdjustmentSingleDepMen, utilityTimeAdjustmentSingleDepWomen,
Expand Down Expand Up @@ -2469,7 +2469,6 @@ public static void loadTimeSeriesFactorMaps(Country country) {
upratingIndexMapRealGDP = ExcelAssistant.loadCoefficientMap(Parameters.getInputDirectory() + "time_series_factor.xlsx", country.toString() + "_gdp", 1, 1);
upratingIndexMapInflation = ExcelAssistant.loadCoefficientMap(Parameters.getInputDirectory() + "time_series_factor.xlsx", country.toString() + "_inflation", 1, 1);
upratingIndexMapRealWageGrowth = ExcelAssistant.loadCoefficientMap(Parameters.getInputDirectory() + "time_series_factor.xlsx", country.toString() + "_wage_growth", 1, 1);
socialCareProvisionTimeAdjustment = ExcelAssistant.loadCoefficientMap(Parameters.getInputDirectory() + "time_series_factor.xlsx", country.toString() + "_care_adjustment", 1, 1);
partnershipTimeAdjustment = ExcelAssistant.loadCoefficientMap(Parameters.getInputDirectory() + "time_series_factor.xlsx", country.toString() + "_cohabitation_adjustment", 1, 1);
studentsTimeAdjustment = ExcelAssistant.loadCoefficientMap(Parameters.getInputDirectory() + "time_series_factor.xlsx", country.toString() +"_students_adjustment", 1, 1);
fertilityTimeAdjustment = ExcelAssistant.loadCoefficientMap(Parameters.getInputDirectory() + "time_series_factor.xlsx", country.toString() + "_fertility_adjustment", 1, 1);
Expand Down Expand Up @@ -2574,9 +2573,6 @@ private static MultiKeyCoefficientMap getTimeSeriesValueMap(TimeSeriesVariable t
case CarerWageRate -> {
map = wageRateFormalSocialCare;
}
case CareProvisionAdjustment -> {
map = socialCareProvisionTimeAdjustment;
}
case PartnershipAdjustment -> {
map = partnershipTimeAdjustment;
}
Expand Down
4 changes: 0 additions & 4 deletions src/main/java/simpaths/data/startingpop/DataParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -225,10 +225,6 @@ private static void parse(String inputFileLocation, String inputFileName, Connec
+ "ALTER TABLE " + personTable + " ALTER COLUMN financial_distress_add RENAME TO yFinDstrssFlag;"

//Social care
+ "ALTER TABLE " + personTable + " ADD careProvidedFlag VARCHAR_IGNORECASE;"
+ "UPDATE " + personTable + " SET careProvidedFlag = 'None' WHERE careHrsProvidedWeek <= 0 OR careHrsProvidedWeek IS NULL;"
+ "UPDATE " + personTable + " SET careProvidedFlag = 'OnlyOther' WHERE careHrsProvidedWeek > 0;"

//SYSTEM : Year
+ "ALTER TABLE " + personTable + " ALTER COLUMN statInterviewYear RENAME TO system_year;"

Expand Down
20 changes: 6 additions & 14 deletions src/main/java/simpaths/model/BenefitUnit.java
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,6 @@ public class BenefitUnit implements EventListener, IDoubleSource, Weight, Compar
@Lag(getter = "getNumberChildrenAll") @Transient private Integer numberChildrenAll_lag1; //Lag(1) of the number of children of all ages in the household
@NullInitialised private Double xChildCareWeek;
@NullInitialised private Double xCareWeek;
@NullInitialised private Integer careProvidedFlag;
@NullInitialised private Long idtaxDbDonor;
@NullInitialised @Transient private Match demDbMatchTax;
@Enumerated(EnumType.STRING) private Region region; //Region of household. Also used in findDonorHouseholdsByLabour method
Expand Down Expand Up @@ -204,7 +203,6 @@ public BenefitUnit(Long id, long statSeed) {
this.dem4to12L1 = Indicator.False;
this.xChildCareWeek = 0.0;
this.xCareWeek = 0.0;
this.careProvidedFlag = 0;
this.yDispMonth = 0.;
this.yGrossMonth = 0.;
this.yDispEquivYear = 0.;
Expand Down Expand Up @@ -301,7 +299,6 @@ public BenefitUnit(BenefitUnit originalBenefitUnit, long benefitUnitInnov, Sampl
this.dem4to12L1 = originalBenefitUnit.dem4to12L1;
this.xChildCareWeek = originalBenefitUnit.xChildCareWeek;
this.xCareWeek = originalBenefitUnit.xCareWeek;
this.careProvidedFlag = originalBenefitUnit.careProvidedFlag;
this.region = originalBenefitUnit.region;
this.yHhQuintilesMonthC5 = originalBenefitUnit.getYdses_c5();
this.yHhQuintilesMonthC5L1 = originalBenefitUnit.yHhQuintilesMonthC5L1;
Expand Down Expand Up @@ -587,10 +584,13 @@ private TaxEvaluation taxWrapper(double hoursWorkedPerWeekM, double hoursWorkedP
}

xCareWeek = 0.0;
careProvidedFlag = 0;
double socialCareCostPerMonth = 0.0;
int careProvided = 0;
if (Parameters.flagSocialCare && !Parameters.flagSuppressSocialCareCosts) {
updateSocialCareProvision();
for (Person person : getMembers()) {
if (person.getCareHrsProvidedWeek() > 0.01)
careProvided = 1;
}
updateSocialCareCostPerWeek();
socialCareCostPerMonth = xCareWeek * Parameters.WEEKS_PER_MONTH;
}
Expand All @@ -605,7 +605,7 @@ private TaxEvaluation taxWrapper(double hoursWorkedPerWeekM, double hoursWorkedP
double taxInnov = (Parameters.donorPoolAveraging) ? -1.0 : statInnovations.getDoubleDraw(8);
evaluatedTransfers = new TaxEvaluation(model.getYear(), getRefPersonForDecisions().getDemAge(), getIntValue(Regressors.NumberMembersOver17),
getIntValue(Regressors.NumberChildren04), getIntValue(Regressors.NumberChildren59), getIntValue(Regressors.NumberChildren1017),
hoursWorkedPerWeekM, hoursWorkedPerWeekF, dlltsdM, dlltsdF, careProvidedFlag, originalIncomePerMonth, secondIncomePerMonth,
hoursWorkedPerWeekM, hoursWorkedPerWeekF, dlltsdM, dlltsdF, careProvided, originalIncomePerMonth, secondIncomePerMonth,
childcareCostPerMonth, socialCareCostPerMonth, getLiquidWealth(Parameters.enableIntertemporalOptimisations), taxInnov);

return evaluatedTransfers;
Expand Down Expand Up @@ -4680,14 +4680,6 @@ private void updateSocialCareCostPerWeek() {
}
}

private void updateSocialCareProvision() {

careProvidedFlag = 0;
for (Person person : getMembers()) {
if (!SocialCareProvision.None.equals(person.getSocialCareProvision()))
careProvidedFlag = 1;
}
}

public void setDeh_c4Local(Education edu) {
i_eduHighestC4 = edu;
Expand Down
101 changes: 9 additions & 92 deletions src/main/java/simpaths/model/Person.java
Original file line number Diff line number Diff line change
Expand Up @@ -98,8 +98,6 @@ public class Person implements EventListener, IDoubleSource, IIntSource, Weight,
@NullInitialised @Transient private Boolean careFormalFlag;
@NullInitialised @Transient private Boolean careFromInformalFlag;
@Column(name="careHrsProvidedWeek") private Double careHrsProvidedWeek;
@Enumerated(EnumType.STRING) @Column(name="careProvidedFlag") private SocialCareProvision careProvidedFlag;
@Lag(field="careProvidedFlag") @Transient private SocialCareProvision careProvidedFlagL1;
@Lag(field="careNeedFlag") @Transient private Indicator careNeedFlagL1;
@Lag(field="careHrsFormalWeek") @Transient private Double careHrsFormalWeekL1;
@Lag(field="careHrsProvidedWeek") @Transient private Double careHrsProvidedWeekL1;
Expand Down Expand Up @@ -445,14 +443,11 @@ else if (demAge > Parameters.MAX_AGE_TO_STAY_IN_CONTINUOUS_EDUCATION)
}

careHrsProvidedWeek = Objects.requireNonNullElse(originalPerson.careHrsProvidedWeek, 0.0);
careProvidedFlag = Objects.requireNonNullElseGet(originalPerson.careProvidedFlag, () ->
(careHrsProvidedWeek > 0.01) ? SocialCareProvision.OnlyOther : SocialCareProvision.None);

careNeedFlagL1 = Objects.requireNonNullElse(originalPerson.careNeedFlagL1, careNeedFlag);
careHrsFormalWeekL1 = Objects.requireNonNullElse(originalPerson.careHrsFormalWeekL1, careHrsFormalWeek);
careHrsInformalWeekL1 = Objects.requireNonNullElse(originalPerson.careHrsInformalWeekL1, careHrsInformalWeek);
careHrsProvidedWeekL1 = Objects.requireNonNullElse(originalPerson.careHrsProvidedWeekL1, careHrsProvidedWeek);
careProvidedFlagL1 = Objects.requireNonNullElse(originalPerson.careProvidedFlagL1, careProvidedFlag);

labWageOfferLowFlag = originalPerson.labWageOfferLowFlag;
labWageOfferLowFlagL1 = originalPerson.labWageOfferLowFlagL1;
Expand Down Expand Up @@ -559,7 +554,7 @@ public Person(Long id, long statSeed) {

// initialise random draws
this.statSeed = statSeed;
statInnovations = new Innovations(37, 1, 1, statSeed);
statInnovations = new Innovations(38, 1, 1, statSeed);

//Draw desired age and wage differential for parametric partnership formation for people above age to get married:
double[] sampleDifferentials = setMarriageTargets();
Expand Down Expand Up @@ -601,12 +596,10 @@ private void setAllSocialCareVariablesToFalse() {
careReceivedFlag = SocialCareReceipt.None;
careFormalFlag = false;
careFromInformalFlag = false;
careProvidedFlag = SocialCareProvision.None;
careNeedFlagL1 = Indicator.False;
careHrsFormalWeekL1 = -9.0;
careHrsInformalWeekL1 = -9.0;
careHrsProvidedWeekL1 = -9.0;
careProvidedFlagL1 = SocialCareProvision.None;
}

public void setAdditionalFieldsInInitialPopulation() {
Expand Down Expand Up @@ -678,7 +671,6 @@ public void setAdditionalFieldsInInitialPopulation() {
careHrsFormalWeekL1 = careHrsFormalWeek;
careHrsInformalWeekL1 = careHrsInformalWeek;
careHrsProvidedWeekL1 = careHrsProvidedWeek;
careProvidedFlagL1 = careProvidedFlag;
labWageOfferLowFlagL1 = getLowWageOffer();
eduHighestC4L1 = eduHighestC4; //Update lag(1) of education level
eduSpellFlagL1 = eduSpellFlag ; //Update lag(1) of education level
Expand Down Expand Up @@ -853,7 +845,7 @@ public void onEvent(Enum<?> type) {
evaluateSocialCareReceipt();
}
case SocialCareProvision -> {
evaluateSocialCareProvision();
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This replace looks spurious

evaluateSocialCareProvision(0.0);
}
case HealthMentalHM1 -> {
healthMentalHM1Level();
Expand Down Expand Up @@ -1489,7 +1481,7 @@ protected void evaluateSocialCareReceipt() {
double score = Parameters.getRegInformalCareHoursS2d().getScore(this,Person.DoublesVariables.class);
double rmse = Parameters.getRMSEForRegression("S2d");
double gauss = Parameters.getStandardNormalDistribution().inverseCumulativeProbability(statInnovations.getDoubleDraw(12));
double informalHours = Math.min(Parameters.MAX_HOURS_WEEKLY_INFORMAL_CARE, Math.exp(score + rmse * gauss));
double informalHours = Math.min(Parameters.MAX_HOURS_WEEKLY_INFORMAL_CARE, Math.sinh(score + rmse * gauss));
careFromInformalFlag = true;
careHrsInformalWeek = informalHours;

Expand Down Expand Up @@ -1562,7 +1554,7 @@ protected void evaluateSocialCareReceipt() {
double score = Parameters.getRegFormalCareHoursS2e().getScore(this,Person.DoublesVariables.class);
double rmse = Parameters.getRMSEForRegression("S2e");
double gauss = Parameters.getStandardNormalDistribution().inverseCumulativeProbability(statInnovations.getDoubleDraw(13));
careHrsFormalWeek = Math.min(Parameters.MAX_HOURS_WEEKLY_FORMAL_CARE, Math.exp(score + rmse * gauss));
careHrsFormalWeek = Math.min(Parameters.MAX_HOURS_WEEKLY_FORMAL_CARE, Math.sinh(score + rmse * gauss));
careFormalX = careHrsFormalWeek * Parameters.getTimeSeriesValue(model.getYear(), TimeSeriesVariable.CarerWageRate);

// Retired process (kept for future reuse): S2k formal care hours.
Expand All @@ -1576,23 +1568,12 @@ protected void evaluateSocialCareReceipt() {
careFormalX = 0.0;
}

protected void evaluateSocialCareProvision() {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This deletion looks spurious

evaluateSocialCareProvision(Parameters.getTimeSeriesValue(model.getYear(),TimeSeriesVariable.CareProvisionAdjustment));
}

public void evaluateSocialCareProvision(double probitAdjustment) {

careProvidedFlag = SocialCareProvision.None;
careHrsProvidedWeek = 0.0;
if (demAge >= Parameters.MIN_AGE_TO_PROVIDE_CARE) {

Person partner = getPartner();
boolean careToPartner = false;
double careHoursToPartner = 0.0;
if (partner != null && partner.careFromInformalFlag) {
careToPartner = true;
careHoursToPartner = partner.getCareHoursFromPartnerWeekly();
}
double probProvideAny;
if (partner == null) {

Expand All @@ -1605,7 +1586,7 @@ public void evaluateSocialCareProvision(double probitAdjustment) {
double score = Parameters.getRegNoCarePartnerProvCareToOtherS3b().getScore(this, Person.DoublesVariables.class);
probProvideAny = Parameters.getRegNoCarePartnerProvCareToOtherS3b().getProbability(score + probitAdjustment);
}
boolean provideCare = (statInnovations.getDoubleDraw(13) < probProvideAny);
boolean provideCare = (statInnovations.getDoubleDraw(37) < probProvideAny);
if (!Parameters.flagSuppressSocialCareCosts && provideCare) {

double score;
Expand All @@ -1622,20 +1603,7 @@ public void evaluateSocialCareProvision(double probitAdjustment) {
rmse = Parameters.getRMSEForRegression("S3d");
}
double gauss = Parameters.getStandardNormalDistribution().inverseCumulativeProbability(statInnovations.getDoubleDraw(14));
careHrsProvidedWeek = Math.min(Parameters.MAX_HOURS_WEEKLY_INFORMAL_CARE, Math.exp(score + rmse * gauss));
if (careToPartner) {

if (careHrsProvidedWeek > careHoursToPartner) {

careProvidedFlag = SocialCareProvision.PartnerAndOther;
} else {

careProvidedFlag = SocialCareProvision.OnlyPartner;
}
} else {

careProvidedFlag = SocialCareProvision.OnlyOther;
}
careHrsProvidedWeek = Math.min(Parameters.MAX_HOURS_WEEKLY_INFORMAL_CARE, Math.sinh(score + rmse * gauss));
}
}
}
Expand Down Expand Up @@ -2501,12 +2469,6 @@ public enum DoublesVariables {
CareMarketFormal_L1,
CareMarketMixed,
CareMarketMixed_L1,
CareToOtherOnly,
CareToOtherOnly_L1,
CareToPartnerAndOther,
CareToPartnerAndOther_L1,
CareToPartnerOnly,
CareToPartnerOnly_L1,
Cohort,
Constant, // For the constant (intercept) term of the regression
Covid_D,
Expand Down Expand Up @@ -3249,25 +3211,7 @@ public double getDoubleValue(Enum<?> variableID) {
return (partner != null && Indicator.True.equals(partner.getNeedSocialCare())) ? 1. : 0.;
}
case ProvideCare_L1 -> {
return (careProvidedFlagL1 != null && !SocialCareProvision.None.equals(careProvidedFlagL1)) ? 1. : 0.;
}
case CareToPartnerOnly -> {
return (SocialCareProvision.OnlyPartner.equals(careProvidedFlag)) ? 1. : 0.;
}
case CareToPartnerAndOther -> {
return (SocialCareProvision.PartnerAndOther.equals(careProvidedFlag)) ? 1. : 0.;
}
case CareToOtherOnly -> {
return (SocialCareProvision.OnlyOther.equals(careProvidedFlag)) ? 1. : 0.;
}
case CareToPartnerOnly_L1 -> {
return (SocialCareProvision.OnlyPartner.equals(careProvidedFlagL1)) ? 1. : 0.;
}
case CareToPartnerAndOther_L1 -> {
return (SocialCareProvision.PartnerAndOther.equals(careProvidedFlagL1)) ? 1. : 0.;
}
case CareToOtherOnly_L1 -> {
return (SocialCareProvision.OnlyOther.equals(careProvidedFlagL1)) ? 1. : 0.;
return (careHrsProvidedWeekL1 != null && careHrsProvidedWeekL1 > 0.0) ? 1. : 0.;
}
case ReceiveCare_L1 -> {
return (getTotalHoursSocialCare_L1() > 0.01) ? 1. : 0.;
Expand Down Expand Up @@ -5148,10 +5092,6 @@ public Long getPartnerID() {
private void nullPartnerVariables() {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This method no longer needed

demPartnerNYear = 0;
if (SocialCareProvision.OnlyPartner.equals(careProvidedFlag))
careProvidedFlag = SocialCareProvision.None;
else if (SocialCareProvision.PartnerAndOther.equals(careProvidedFlag))
careProvidedFlag = SocialCareProvision.OnlyOther;
}

public Labour getLabourSupplyWeekly() {
Expand Down Expand Up @@ -5323,9 +5263,6 @@ public void setCareHoursFromOtherWeekly_lag1(double val) {
public void setCareHoursFromFormalWeekly_lag1(double val) {
careHrsFormalWeekL1 = val;
}
public void setSocialCareProvision_lag1(SocialCareProvision careProvision) {
careProvidedFlagL1 = careProvision;
}

public void setHealthWbScore0to36(Double healthWbScore0to36) {
this.healthWbScore0to36 = healthWbScore0to36;
Expand Down Expand Up @@ -5425,10 +5362,6 @@ public void setSocialCareReceipt(SocialCareReceipt who) {
careReceivedFlag = who;
}

public void setSocialCareProvision(SocialCareProvision who) {
careProvidedFlag = who;
}

public Indicator getDlltsd_lag1() {
return healthDsblLongtermFlagL1;
}
Expand Down Expand Up @@ -5795,18 +5728,8 @@ else if (getHoursInformalSocialCare()<0.01)
else return SocialCareReceiptState.Mixed;
}

public double getSocialCareProvisionState() {
// double val = getSocialCareProvision().getValue();
// if (demAge>DecisionParams.MAX_AGE_COHABITATION && val > 0.1 && val < 2.1)
// val = 3.0;
return (double)getSocialCareProvision().getValue();
}

public SocialCareProvision getSocialCareProvision() {
if (careProvidedFlag ==null)
return SocialCareProvision.None;
else
return careProvidedFlag;
public Double getCareHrsProvidedWeek() {
return careHrsProvidedWeek;
}

public double getRetired() {
Expand Down Expand Up @@ -6216,12 +6139,6 @@ else if (getStudent()==0)
else
return RegressionName.PartnershipU1;
}
case SocialCareProvision -> {
if (Dcpst.Partnered.equals(getDcpst()))
return RegressionName.SocialCareS3b;
else
return RegressionName.SocialCareS3a;
}
case WagePotential -> {
if (Gender.Male.equals(demMaleFlag))
return RegressionName.WagesMalesE;
Expand Down
Loading
Loading