Скачать презентацию Currency Coding in Share Life Christian Hunkler Скачать презентацию Currency Coding in Share Life Christian Hunkler

cbc926777e18f9efa478ae89da638ec9.ppt

  • Количество слайдов: 21

Currency Coding in Share Life Christian Hunkler Currency Coding in Share Life Christian Hunkler

If you already started with currency coding, we will adapt your programs to this If you already started with currency coding, we will adapt your programs to this scheme 2

Currency Coding - Examples 4 E. g. RC module: MATERNITY BENEFIT AMOUNT rc 032 Currency Coding - Examples 4 E. g. RC module: MATERNITY BENEFIT AMOUNT rc 032 Can you tell me how much was your first net monthly maternity benefit when you had [{name other child}]? IWER: Enter amount. Enter currency at next question rc 033 IWER: Please ask or code: Which currency was this in? 4 AC module e. g. ac 023/ac 024 sale price of owned property 4 RE module e. g. re 021/re 022 first monthly wage in job 3

Anyt Currency Codinghing 3 that can g - Problems w o rong, we nt! Anyt Currency Codinghing 3 that can g - Problems w o rong, we nt! wron concern g ing 4 Respondents think in various pre-Euro currencies curren cies - R’s life-spans cover various currencies & currency reforms - R’s lived in different countries and report in these currencies, either using their actual names/abbreviations, or not - R’s supply non-standard or local currency abbreviations/names, - Or without exact specification (e. g. “francs”: french, swiss, …? ) 4 Interviewers - I’s enter amounts instead of currencies - I’s enter answers to other questions instead of currencies - typos 4 Strings - Strings allow R’s and I’s to fully charge us with all these issues - Currency abbreviations are short (2 -/3 -digits), difficult to unambiguously identify typos 4

Currency Coding - Examples Switzerland Spain 4 francs suisses 4 pesetas y euros 4 Currency Coding - Examples Switzerland Spain 4 francs suisses 4 pesetas y euros 4 schw. fr 4 8000000. 00 4 hospice general 4 uros 4 franchi 4 pesertas 4 fr. Is uros a typo of Euros, or something else? 4 a-dollar Poland Did the last 3 R’s maybe live in Luxemburg, or in France? 4 marki Whats “a dollar”? “Deutsche Mark”, “Mark der DDR”, “Reichsmark”; Finnish Markkaa; there are more marks! 5

Currency Coding - General Process 4 In total 1186 unique currency strings (15. 05. Currency Coding - General Process 4 In total 1186 unique currency strings (15. 05. 2009); between 28 (FR) and 192 (CH) per country 4 Step 1 – Assess the Mess - Code strings as conservative as possible into numeric variables Raw Currency Codes (RCC), to be distributed to users Coding by country teams (MEA supplies templates) 4 Step 2 – Use all countries inf. to reduce unknown codes - e. g. from various countries we see a currency “PKR” and majority of these respondents lived in Pakistan; Pakistan Rupees Generated Currency Codes (GCC), coordinated by MEA; any other good “hypothesis” are welcome: Interviewer 4 Step 3 – Involve experts to develop Generated Amounts 6

Currency Coding Step 1 “Assess the mess” Users should be given access to the Currency Coding Step 1 “Assess the mess” Users should be given access to the raw data as close as possible to be able to recode their own measures 4 Coding Rules for Raw Currency Codes (RCC) - Only code “safe” answers into currency codes [If you did not start yet, please use our currency code list] - Do not impose any additional assumptions - Do not pick “the likeliest” currency - Rather use additional codes (>300) for uncertain strings - Additional Codes New standard missing codes (-2=“refusal”; -1=“don’t know”) -6 : amount instead of currency -7 : answer to different question 7

Currency Coding Step 1 “Assess the mess” 4 3 Template Do Files share_w 3_CC_01_currency_coding_EXTRACT_STRINGS_vers_01. Currency Coding Step 1 “Assess the mess” 4 3 Template Do Files share_w 3_CC_01_currency_coding_EXTRACT_STRINGS_vers_01. do extracts all currency variables from all modules, deletes duplicates, and stores all unique currency strings in countryspecific file(s) share_w 3_CC_02_currency_coding_CODE_SCHEME_vers_01. do template with sample commands for German data on how to code currency variables using globals share_w 3_CC_03_currency_coding_APPLY_SCHEME_vers_01. do applies the code-scheme from the previous program to all currency variables in all modules 8

share_w 3_de_01_currency_coding_ EXTRACT_STRINGS_vers_01. do *----[0: PREPARATIONS (i. e. path definitions. . . )]------------global INPATH share_w 3_de_01_currency_coding_ EXTRACT_STRINGS_vers_01. do *----[0: PREPARATIONS (i. e. path definitions. . . )]------------global INPATH global STUB global COUNTRY global OUTPATH "L: /MEA_R/20090515/CAPI/de" // Data Folder "sharew 3_" // Filenames without module suffix "de" // Select your country "L: /temp" // Specify a directory to store the // the final file and a couple of // temporary files *------------------------------------clear version 9. 0 set mem 300 m pause off set more off *** NO CHANGES NEEDED BELOW *** 9

share_w 3_de_01_currency_coding_ EXTRACT_STRINGS_vers_01. do *----[I: EXTRACT CURRENCY STRINGS FROM ALL MODULES]-----------foreach c in $COUNTRY share_w 3_de_01_currency_coding_ EXTRACT_STRINGS_vers_01. do *----[I: EXTRACT CURRENCY STRINGS FROM ALL MODULES]-----------foreach c in $COUNTRY quietly { foreach m in ac cs cv_r fq fs gl hc hs iv ls mn rc re rp st xt { { *>> prepare empty dataset to store all currency strings clear set obs 1 // one empty line added gen str 20 currency = "" save "${OUTPATH}/currency_coding_`c'. dta", replace *>> select currency variables use "${INPATH}/${STUB}`m'. dta", clear quietly ds, has(varlabel *currency*) // r(varlist) holds list // of vars with currency *>> store varlist as global to have it available for later use global cvars_`c'_`m' `r(varlist)' 10

share_w 3_de_01_currency_coding_ EXTRACT_STRINGS_vers_01. do *>> extract each currency variable, drop duplicates/empty strings foreach var share_w 3_de_01_currency_coding_ EXTRACT_STRINGS_vers_01. do *>> extract each currency variable, drop duplicates/empty strings foreach var of global cvars_`c'_`m' { use `var' using "${INPATH}/${STUB}`m'. dta", clear rename `var' currency duplicates drop keep if currency!="" save "${OUTPATH}/tempfile_`c'_`m'_`var'. dta", replace } *>> use empty dataset and append all single currency vars use "${OUTPATH}/currency_coding_`c'. dta", clear foreach var of global cvars_`c'_`m' { append using "${OUTPATH}/tempfile_`c'_`m'_`var'. dta" } *>> aggregate it within modules duplicates drop keep if currency!="" // the one empty line is dropped save "${OUTPATH}/currency_coding_`c'_`m'. dta", replace 11

share_w 3_de_01_currency_coding_ EXTRACT_STRINGS_vers_01. do *>> aggregate it within countries use share_w 3_de_01_currency_coding_ EXTRACT_STRINGS_vers_01. do *>> aggregate it within countries use "${OUTPATH}/currency_coding_`c'_ac. dta", clear foreach m in cs cv_r fq fs gl hc hs iv ls mn rc re rp st xt append using "$OUTPATH/currency_coding_`c'_`m'. dta" } { *>> Make basic string corrections, get rid of duplicates again replace currency = lower(itrim(currency))) duplicates drop keep if currency!="" *>> save final coding file country wise save "${OUTPATH}/currency_coding_`c'. dta", replace *>> erase temporary files foreach m in ac cs cv_r fq fs gl hc hs iv ls mn rc re rp st xt erase "${OUTPATH}/currency_coding_`c'_`m'. dta" } } //quietly end { 12

share_w 3_de_02_currency_coding_ CODE_SCHEME_vers_01. do *----[0: PREPARATIONS (i. e. path definitions. . . )]-----------global COUNTRY share_w 3_de_02_currency_coding_ CODE_SCHEME_vers_01. do *----[0: PREPARATIONS (i. e. path definitions. . . )]-----------global COUNTRY "de" // Select your country global OUTPATH "L: /temp" // Specify the same directory as in // Do File 1, where final file of do // file 1 is stored use $OUTPATH/currency_coding_${COUNTRY}. dta, replace global CURVAR currency // store it as global, as the code scheme // developed for this list of strings is // used for all "real" currency variables // in all modules // therefore we need a "container" we can // replace with real variable names later // on *** out-comment everything above for use in program 3 13

share_w 3_de_02_currency_coding_ CODE_SCHEME_vers_01. do *----[1: CODING SECTION]------------------------gen ${CURVAR}c =. // generate numeric variable holding share_w 3_de_02_currency_coding_ CODE_SCHEME_vers_01. do *----[1: CODING SECTION]------------------------gen ${CURVAR}c =. // generate numeric variable holding coded version // of CURVAR *>> STATA LABELS lab var ${CURVAR}c „Currency Code Sheme for country: ${COUNTRY}" lab def ${CURVAR}c -6 "amount instead of currency" -7 "answer to different question" , modify lab def ${CURVAR}c -2 "refusal" -1 "don't know" , modify lab lab … def ${CURVAR}c 1 "eur - euro" 5 "bef - belgian franc" 14 "chf - swiss francs" 15 "cyp - cyprus pound" , modify 14

share_w 3_de_02_currency_coding_ CODE_SCHEME_vers_01. do *>> CODE NUMBERS & OTHER SUBSTANTIVE ANSWERS; REFUSALS; CORRECT TYPOS share_w 3_de_02_currency_coding_ CODE_SCHEME_vers_01. do *>> CODE NUMBERS & OTHER SUBSTANTIVE ANSWERS; REFUSALS; CORRECT TYPOS OF KNOWN CURRENCIES replace ${CURVAR}c = -2 if inlist($CURVAR, "#refusal#") replace ${CURVAR}c = -1 if inlist($CURVAR, "#don't know#") replace ${CURVAR}c = -6 if inlist($CURVAR, "30", "270", "320") replace ${CURVAR}c = -6 if inlist($CURVAR, "1170", "00", "2200") replace ${CURVAR}c = -6 if inlist($CURVAR, "300000", "150", "420") replace ${CURVAR}c = -7 if inlist($CURVAR, "1952", "sekretärin") *>> CODE EUROS & "SAVE" CURRENCIES replace ${CURVAR}c = 1 if inlist($CURVAR, "euro", "eur", "euo") replace ${CURVAR}c = 18 if inlist($CURVAR, "dm", "deutache mark") replace ${CURVAR}c = 18 if inlist($CURVAR, "deutsche mark", "d-mark") … replace ${CURVAR}c = 17 if inlist($CURVAR, "mark der ddr", "ddr mark") … 15

share_w 3_de_02_currency_coding_ CODE_SCHEME_vers_01. do *>> once in a while: drop all already coded strings: share_w 3_de_02_currency_coding_ CODE_SCHEME_vers_01. do *>> once in a while: drop all already coded strings: drop if ${CURVAR}c !=. // out-comment this for use in program 3 *>> and open data browser again to check the remaining strings: br // abbreviation for browse out-comment this *>> Use replace replace >300 codes ${CURVAR}c ${CURVAR}c for all =341 if =342 if =343 if =344 if =345 if remaining strings inlist($CURVAR, "deputat (naturalien)") inlist($CURVAR, "ru") inlist($CURVAR, "lat") inlist($CURVAR, "tjige") inlist($CURVAR, "ruel") *** out-comment everything below for use in program 3 *>> you are done if all strings are represented by numeric codes drop if ${CURVAR}c !=. . list. // NO MORE STRINGS IN FILE, CODING IS DONE : -) 16

share_w 3_de_03_currency_coding_ APPLY_SCHEME_vers_01. do *----[0: PREPARATIONS (i. e. path definitions. . . )]--- as share_w 3_de_03_currency_coding_ APPLY_SCHEME_vers_01. do *----[0: PREPARATIONS (i. e. path definitions. . . )]--- as beforeach c in $COUNTRY foreach m in ac cs cv_r fq fs gl hc hs iv ls mn rc re rp st xt { { *>> select currency variables use "${INPATH}/${STUB}`m'. dta", clear quietly ds, has(varlabel *currency*) global cvars_`c'_`m' `r(varlist)' // store varlist as global *>> label currency variables in each module use "${INPATH}/${STUB}`m'. dta", clear foreach var of global cvars_`c'_`m' { global CURVAR `var' replace `var' = lower(itrim(`var'))) do "${DOFILE}/share_w 3_de_02_currency_coding_CODE_SCHEME. do" save "${OUTPATH}/sharew 3_`m'_withcurcodes. dta", replace } } } 17

Currency Coding Step 1 “Assess the mess” 4 Risky assumption 4 The procedure takes Currency Coding Step 1 “Assess the mess” 4 Risky assumption 4 The procedure takes only currency string variables into account that have „currency“ in their variable label 4 So, if you discover any other variable including currencies but having a different label, let us know 4 If labels are changed, e. g. non-English labels, the procedure will not work anymore. Remedies: 1. You have to change the label search command: – quietly ds, has(varlabel *currency*) – 2. We send you a file containing all unique currency strings for your country 18

Suggestions for Step 1 “Assess the mess” 1. Easiest to code all typos of Suggestions for Step 1 “Assess the mess” 1. Easiest to code all typos of country’s actual/pre-Euro currency [swiss francs, s. f. , …] 2. Easy to code “country & currencies” formatted answers [argent. pesos] For 1. & 2. , please use Share_w 3_all_Currency. Code. Plan. xls 3. Easy to code “currency names”, please do not make assumptions here [dollar, mark, …] its obvious for “dollars” or “marks” that it might be misleading; and maybe is also for other currency names 4. Check remaining strings, maybe there are some more strings with only minor typos For 3. & 4. , develop own codes, preferably >300 19

MEA Wants 1. Program 2 or similar styled list of strings, their codes, and MEA Wants 1. Program 2 or similar styled list of strings, their codes, and codeplan use the Stata template files, or if you use SPSS, please use a format (tabs, spaces) that allows easy transformation 2. List of currencies in use during respondents life span, preferably including - English currency name, Date of currency being effective [& Expiration Date] i. e. currency reforms Typically used abbreviation codes for these currencies 3. Any good ideas/expertise on how to reduce the remaining problems 20

Thank you 21 Thank you 21