R/ysi_age_pension.R

Defines functions ysi_age_pension

Documented in ysi_age_pension

#' Age Pension Master Function
#'
#' (Jackson to complete...)
#'
#' @name ysi_age_pension
#' @param df Argument is intended to be a survey with the Tax_Matrix set, as a data frame
#' @return A data frame
#' @export

ysi_age_pension <- function(df = NULL){
  HHtbl <- df

  #HHtbl <- HHtbl %>% filter(Age >= 18)
  print("AssessableAssetsfn")
  HHtbl <- AssessableAssetsfn(HHtbl)

  print("OrdinaryIncomefn")
  HHtbl <- OrdinaryIncomefn(HHtbl)

  print("DeemedAssetsfn")
  HHtbl <- DeemedAssetsfn(HHtbl)

  print("OwnHomeAPfn")
  HHtbl <- OwnHomeAPfn(HHtbl)

  print("AgePensionRatefn")
  HHtbl <- AgePensionRatefn(HHtbl)

  print("Other items")

  ## deemed assets with home
  HHtbl <- HHtbl %>% mutate(AssetsAdjHome=AssetShare+SuperAdj+BankBal+UnitOPEquity+UnitHomeEquityAP,
                            DeemedAssetsHome=ifelse(ComplicatedAssetSplit==1,SharedDeemedAssets*AssetProp+SuperAdj+BankBal+UnitHomeEquityAP,
                                                    SharedDeemedAssets+SuperAdj+BankBal+UnitHomeEquityAP))
  HHtbl <- RentAssistfn(HHtbl)

  ### NOW FOR THE OUTPUTS

  ## Dummy for if currently receiving a pension payment
  HHtbl$AP_per_Fortnight[which(is.na(HHtbl$AP_per_Fortnight))] <- 0
  HHtbl <- HHtbl %>% mutate(AnnualisedAP=AP_per_Fortnight*26)

  HHtbl <- HHtbl %>% group_by(PersonID) %>%
    mutate(ra=ifelse(Rent_Assist==1,ifelse(Single==1,min(-min((Fortnightly_Rent-RAMaxRentSingle)*0.75,0),RAMaxRatesSingle)*26,
                                           min(-min((Fortnightly_Rent-RAMaxRentCoupled)*0.75,0),RAMaxRatesCoupled)*26/2),0),
           mpr=ifelse(Single==1,APMBRSingle+APPSSingle+APESSingle+ra,APMBRCoupled+APPSCoupled+APESCoupled+ra),
           di=ifelse(Single==1,sum(diff(c(0,pmin(DeemedAssets,c(DeemTASingle,Inf))))*c(DeemBTR,DeemATR)),
                     sum(diff(c(0,pmin(DeemedAssets,c(DeemTACoupled,Inf))))*c(DeemBTR,DeemATR))),
           oi=ifelse(Single==1,Ordinary_Income+di,(Ordinary_Income+di)/2),
           ir=ifelse(Single==1,max(oi-APIncTestSingle,0)*APIncomeRedRate,max(oi-APIncTestCoupled,0)*APIncomeRedRate),
           voa=ifelse(Single==1,AssetsAdj,AssetsAdj/2),
           avl=ifelse(Single==1,ifelse(UnitOwnHomeAP==TRUE,as.numeric(APAssetsSingleOwnHome),as.numeric(APAssetsSingle)),
                      ifelse(UnitOwnHomeAP==TRUE,as.numeric(APAssetsCoupledOwnHome)/2,as.numeric(APAssetsCoupled)/2)),
           ar=max(floor((voa-avl)/250)*9.75,0),
           ReducedRate=(ir+ar>0),
           HowReduced=ifelse(ReducedRate==TRUE,ifelse(ir>ar,"Income","Assets"),"NotReduced"),
           age_pensionEST=ifelse(Age>=65,max(min(mpr-ir,mpr-ar),0),0),
           age_pension=ifelse(AnnualisedAP>0,age_pensionEST,0))
  HHtbl$age_pension[which(is.na(HHtbl$age_pension))] <- 0

  return(HHtbl)
}
youngstreetinitiative/ysi documentation built on April 11, 2024, 2:32 a.m.