-
Notifications
You must be signed in to change notification settings - Fork 36
Remove careProvdedFlag and correct bugs in care hours transformations #462
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -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; | ||
|
|
@@ -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; | ||
|
|
@@ -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(); | ||
|
|
@@ -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() { | ||
|
|
@@ -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 | ||
|
|
@@ -853,7 +845,7 @@ public void onEvent(Enum<?> type) { | |
| evaluateSocialCareReceipt(); | ||
| } | ||
| case SocialCareProvision -> { | ||
| evaluateSocialCareProvision(); | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This replace looks spurious |
||
| evaluateSocialCareProvision(0.0); | ||
| } | ||
| case HealthMentalHM1 -> { | ||
| healthMentalHM1Level(); | ||
|
|
@@ -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; | ||
|
|
||
|
|
@@ -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. | ||
|
|
@@ -1576,23 +1568,12 @@ protected void evaluateSocialCareReceipt() { | |
| careFormalX = 0.0; | ||
| } | ||
|
|
||
| protected void evaluateSocialCareProvision() { | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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) { | ||
|
|
||
|
|
@@ -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; | ||
|
|
@@ -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)); | ||
| } | ||
| } | ||
| } | ||
|
|
@@ -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, | ||
|
|
@@ -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.; | ||
|
|
@@ -5148,10 +5092,6 @@ public Long getPartnerID() { | |
| private void nullPartnerVariables() { | ||
|
|
||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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() { | ||
|
|
@@ -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; | ||
|
|
@@ -5425,10 +5362,6 @@ public void setSocialCareReceipt(SocialCareReceipt who) { | |
| careReceivedFlag = who; | ||
| } | ||
|
|
||
| public void setSocialCareProvision(SocialCareProvision who) { | ||
| careProvidedFlag = who; | ||
| } | ||
|
|
||
| public Indicator getDlltsd_lag1() { | ||
| return healthDsblLongtermFlagL1; | ||
| } | ||
|
|
@@ -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() { | ||
|
|
@@ -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; | ||
|
|
||
There was a problem hiding this comment.
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