*! version 1.0.7 16nov2020 Ben Jann
help iscogenhttp://github.com/benjann/iscogen/

Title

iscogen -- Utility to translate ISCO codes

Syntax

Translate ISCO codes

iscogen newvar = fcn(isco
[sempl supvis])
[if] [in]
[,
from(from)
replace
emissing
string
nolabel
invalid
]

where fnc() is

major() generate major ISCO groups (1-digit)

submajor() generate submajor ISCO groups (2-digit)

minor() generate minor ISCO groups (3-digit)

isco08() generate 4-digit ISCO-08 codes

isco88() generate 4-digit ISCO-88 codes

isco88com() generate 4-digit ISCO-88(COM) codes

isco68() generate 4-digit ISCO-68 codes

isei() generate ISEI scores

iseisps() alternative ISEI scores for ISCO08

siops() generate SIOPS scores

treiman() synonym for siops()

mps() generate MPS scores

egp() generate EGP classes (Hendrickx variant)

egp11() generate EGP classes (Ganzeboom variant)

esec() generate ESEC classes

oesch() generate 16 OESCH classes

oesch8() generate 8 OESCH classes

oesch5() generate 5 OESCH classes

The function names are case-insensitive. Not all functions are supported
for all input variables. See the list of supported translations below.

Assign value labels

iscolbl lbl [varlist]
[, name(name) minimal
modify major submajor minor ]

Description

iscogen is a tool to translate unit-group ISCO codes
(International Standard Classification of Occupations). The
following translations are currently supported (see Sources below for details
on the different translators):

ISCO-08 -> major (1 digit), submajor (2 digit), minor (3 digit) groups

ISCO-08 -> ISCO-88

ISCO-08 -> ISEI (International Socio-economic Index of Occupational Status; Ganzeboom et al. 1992)

ISCO-08 -> SIOPS (Standard International Occupational Prestige Scale; Treiman 1977)

ISCO-08 -> ESEC (European Socio-economic Classification; Harrison/Rose 2006)

ISCO-08 -> OESCH classes (16, 8 or 5 classes; Oesch 2006a,b)

ISCO-88 -> major (1 digit), submajor (2 digit), minor (3 digit) groups

ISCO-88 -> ISCO-08

ISCO-88 -> ISCO-88(COM) (European Union variant of the ISCO-88)

ISCO-88 -> ISCO-68

ISCO-88 -> ISEI (International Socio-economic Index of Occupational Status; Ganzeboom et al. 1992)

ISCO-88 -> SIOPS (Standard International Occupational Prestige Scale; Treiman 1977)

ISCO-88 -> MPS (German Magnitude Prestige Scale; Christoph 2005)

ISCO-88 -> EGP classes (Erikson et al. 1979, 1983)

ISCO-88 -> ESEC (European Socio-economic Classification; Harrison/Rose 2006)

Note: ESEC is based on ISCO-88(COM); consider converting ISCO-88 to ISCO-88(COM) before
translating to ESEC

ISCO-88 -> OESCH classes (16, 8 or 5 classes; Oesch 2006a,b)

ISCO-68 -> ISCO-08

ISCO-68 -> ISCO-88

ISCO-68 -> ISEI (International Socio-economic Index of Occupational Status; Ganzeboom et al. 1992)

ISCO-68 -> SIOPS (Standard International Occupational Prestige Scale; Treiman 1977)

ISCO-68 -> EGP classes (Erikson et al. 1979, 1983)

Variable isco specifies the input ISCO variable that is to be
translated. It can be numeric or string. The default is to assume isco
to contain 4-digit ISCO-08 codes; for ISCO-88 or ISCO-68 you must specify option
from(isco88) or from(isco68), respectively. In any case, isco
is assumed to contain 4-digit codes. Decimal places will be ignored (that is,
for example, 1000.5 will be treated as 1000).

With some translators you may additionally specify variables sempl and
supvis. sempl!=0 indicates that a respondent is self-employed;
supvis indicates that a respondent has supervisory status and, possibly,
specifies the number of subordinates or employees. In general, omitted or missing
sempl will be treated as sempl=0 (unless noted otherwise), and omitted, missing, or negative
supvis will be treated as supvis=0. Details
are as follows:

o egp() and egp11()

- from(isco88): relevant distinctions for supvis are 0 vs. 1 vs. 2-9 vs. 10 or more

- from(isco68): relevant distinctions for supvis are 0 vs. 1-9 vs. 10 or more

o esec()

- if sempl=0: the relevant distinction is supvis=0 (no supervisory status)
vs. supvis>0 (supervisory status); supervisors are employees
who have formal responsibility for supervising the work of other employees; if the data
does not contain a direct measure of supervisory status, the
ESEC User Guide
(section 4.7)
suggests coding employees as supervisors if they are supervising at least three people.

- if sempl!=0: relevant distinctions for supvis are 0 vs. 1-9 vs. 10 or more
(although note that the resulting ESEC classes will be the same for 0 and 1-9)

- from(isco88): the "simplified" ESEC (see
ESEC User Guide)
will be applied if sempl is omitted or missing

o oesch(), oesch8(), and oesch5()

- if sempl=0: supvis is ignored

- if sempl!=0: relevant distinctions for supvis are 0 vs. 1-9 vs. 10 or
more

- helping family members should be coded as sempl!=0 with supvis=0

iscolbl creates value labels and, if varlist is provided,
assigns them to the specified variables. lbl is one of the following
(case-insensitive):

isco08 ISCO-08 labels

isco88 ISCO-88 labels

isco88com ISCO-88(COM) labels

isco88a Ganzeboom/Treiman variant of ISCO-88 labels (brief labels)

isco88b Ganzeboom/Treiman variant of ISCO-88 labels (verbose labels)

isco68 ISCO-68 labels

egp EGP labels (Hendrickx variant)

egp11 EGP labels (Ganzeboom variant)

esec ESEC labels

oesch 16-class OESCH labels

oesch8 8-class OESCH labels

oesch5 5-class OESCH labels

Options for iscogen

from(from) declares the type of input variable. from
can be one of the following:

isco08 4-digit ISCO-08 codes; the default

isco88 4-digit ISCO-88 codes

isco68 4-digit ISCO-68 codes

replace allows overwriting an existing variable.

emissing requests that extended missing values (.a, .b,
...) be carried forward to the generated variable (including their labels,
unless nolabel is specified). The default is to use
system missing (.) for these observations. emissing has no
effect if isco is a string variable or if string has been
specified. In any case, extended missing values will only be carried forward
within the sample satisfying the if and in qualifiers.

string enforces string format for the generated variable. The default
is to use a numeric format.

nolabel suppresses creating value labels for the generated
variable. By default, unless string is specified, the generated codes
will be labelled (if labels are available).

invalid requests that a list of invalid codes (i.e. codes
that could not be translated) is returned in r(invalid).

Options for iscolbl

name(name) provides a name to be used for the value labels. The
default is to use the name(s) of the variable(s). If name() is
specified, only one label set is added to the data; by default, each
variable receives its own set. If varlist is
omitted, lbl is used as label name.

minimal requests that only values be labeled that exist in the
data. The default is to include all defined labels. minimal is only
allowed if varlist is specified.

modify causes existing labels to be modified instead of replaced.

major, submajor, and minor can be used with ISCO-08 and
ISCO-88 to request labels for major groups (1-digit),
submajor groups (2-digit), or minor groups (3-digit) instead
of the default unit groups (4-digit). Only one of major,
submajor, and minor is allowed.

Sources

The various mappings and labels supported by iscogen have been
obtained from the following sources.

ISCO-08 mappings

ISCO-08 -> major (1 digit), submajor (2 digit), minor (3 digit) groups

No source. The target values are generated by truncating the input
values. Only values between 0 and 9999 will be translated.

ISCO-08 -> ISCO-88

SPSS script isco0888.sps provided by Harry Ganzeboom at
http://www.harryganzeboom.nl/isco08/. The first mapping is
used in cases where the source contains repeated mappings; this is consistent
with the source since repeated mappings are ignored by the used SPSS command.

ISCO-08 -> ISEI

isei(): File isco08_with_isei.pdf
(Ganzeboom 2010) provided by Harry Ganzeboom at http://www.harryganzeboom.nl/isco08/.

iseisps(): SPSS script isqoisei08.sps provided by Harry Ganzeboom at
http://www.harryganzeboom.nl/isco08/.

The two variants lead to somewhat different results (correlation of about 0.95
across occupational titles). It does not seem to be
clear whether isei() or iseisps() is to be preferred.

ISCO-08 -> SIOPS

SPSS script isqotrei08.sps provided by Harry Ganzeboom at
http://www.harryganzeboom.nl/isco08/.

ISCO-08 -> ESEC

File esec_08_3_digit_public.xlsx
provided by Eric Harrison at
http://ekharrison.weebly.com/european-socio-economic-classification-esec.html. For
information on the ESEC classification also see
http://www.iser.essex.ac.uk/archives/esec. Note that ESEC is defined
at the level of minor groups (3 digit) (i.e. all unit groups within a minor group
map into the same class). ISCO minor groups 960, 961, and 962 are missing in the ESEC
list provided in esec_08_3_digit_public.xlsx; iscogen applies the same ESEC classes as
for minor groups 950, 951, and 952.

ISCO-08 -> OESCH

Stata script iscooesch.ado (version May 2018) by
Kaiser (2018). The mapping has been
generated automatically by applying iskooesch.ado to all relevant
combinations of ISCO codes, self-employment status, and number
of subordinates or employees.

ISCO-88 mappings

ISCO-88 -> major (1 digit), submajor (2 digit), minor (3 digit) groups

No source. The target values are generated by truncating the input
values. Only values between 0 and 9999 will be translated.

ISCO-88 -> ISCO-08

SPSS script isco8808.sps provided by Harry Ganzeboom at
http://www.harryganzeboom.nl/isco08/.

ISCO-88 -> ISCO-08(COM)

Translation based on Appendix 7.12 in
Geis (2011), covering
the ISCO-88
codes provided by the ILO. The
ISCO-88(COM)
is the European Union variant of the ISCO-88. A number
of ISCO-88 codes do not exist in the ISCO-88(COM)
(0110, 1120, 1130, 2132, 3240, 3241, 3242, 3439, 5150, 5151, 5152, 5230,
6113, 6114, 6123, 6124, 6200, 6210, 7142, 7243, 8171, 8172, 9112, 9321,
9322, 9331, 9332, 9333) or have a different meaning (6112). These codes are remapped
as suggested by Geis (2011). Note that the ISCO-88(COM) also has three additional
codes (2470, 7139, 8287); these codes have no counterpart in the ISCO-88 and, hence,
will be left empty by the translator. Furthermore, a number of
ISCO-88(COM) labels are somewhat different from the ISCO-88 labels; the translator will
assign the ISCO-88(COM) labels in these cases.

ISCO-88 -> ISCO-68

SPSS script isco8868.sps provided by Harry Ganzeboom at
http://www.harryganzeboom.nl/isco68/. The mapping is consistent with
Stata script isko8868.ado (version 1.0 15jun2001) by
Hendrickx (2002b).

ISCO-88 -> ISEI

File scaleapp.htm
provided by Harry Ganzeboom at http://www.harryganzeboom.nl/isco88/ (equivalent
to the Appendix in Ganzeboom/Treiman 1996). Apart from two exceptions,
the mapping is consistent with Stata script iskoisei.ado (version 1.0 15jun2001) by
Hendrickx (2002b), which is based on
SPSS script iskoisei.sps provided by Harry Ganzeboom at
http://www.harryganzeboom.nl/isco88/. The two exceptions are ISCO codes
6134 (score 23 by iscogen vs. score 28 by
iskoisei.ado/iskoisei.sps) and 7520 (score 38 by iscogen vs. score 39 by
iskoisei.ado/iskoisei.sps); the scores used by iscogen are consistent with
the values printed in Ganzeboom/Treiman (1996).

ISCO-88 -> SIOPS

File bernhard2005.xlsx
provided by Harry Ganzeboom at http://www.harryganzeboom.nl/isco88/ (equivalent
to the Appendix in Ganzeboom/Treiman 1996). The mapping is consistent with Stata
script iskotrei.ado (version 1.0 15jun2001) by
Hendrickx (2002b), which is based on
SPSS script iskotrei.sps provided by Harry Ganzeboom at
http://www.harryganzeboom.nl/isco88/.

ISCO-88 -> MPS

File bernhard2005.xlsx
provided by Daniel Bela at http://github.com/dirtyhawk/stata-derivescores/ (should be equivalent
to Appendix Table A5 in Christoph 2005).

ISCO-88 -> EGP

egp(): Stata script iskoegp.ado (version 1.2 14Oct2004) by
Hendrickx (2002b). The mapping
has been generated automatically by applying iskoegp.ado to all relevant
combinations of ISCO codes, self-employment status, and number
of subordinates or employees.

egp11(): SPSS scripts iskoegp.sps, iskoroot.sps, and iskopromo.sps
provided by Harry Ganzeboom at http://www.harryganzeboom.nl/isco88/. The mapping
has been generated automatically by applying the scripts to all relevant
combinations of ISCO codes, self-employment status, and number
of subordinates or employees.

The main difference between egp() and egp11() is that
egp11() distinguishes between classes IIIa and IIIb whereas
egp() makes no such distinction; also note that different numeric codes
are used for classes IVa and IVb.

ISCO-88 -> ESEC

File Euroesec matrix.xls
from
http://www.iser.essex.ac.uk/archives/esec. Note that ESEC is defined
at the level of minor groups (3 digit) (i.e. all unit groups within a minor group
map into the same class). Furthermore, note that the ESEC translator is
based on the ISCO-88(COM),
the European Union variant of the ISCO-88. If your data contains ISCO-88 codes
you might want to translate these codes to ISCO-88(COM) using
isco88com() before applying esec().

ISCO-88 -> OESCH

Stata script iskooesch.ado (version May 2018) by
Kaiser (2018). The
mapping has been generated automatically by applying iskooesch.ado to all relevant
combinations of ISCO codes, self-employment status, and number
of subordinates or employees.

ISCO-68 mappings

ISCO-68 -> ISCO-08

SPSS script isco6808.sps provided by Harry Ganzeboom at
http://www.harryganzeboom.nl/isco08/. The first mapping is
used in cases where the source contains repeated mappings; this is consistent
with the source since repeated mappings are ignored by the used SPSS command.

ISCO-68 -> ISCO-88

SPSS script isco6888.sps provided by Harry Ganzeboom at
http://www.harryganzeboom.nl/isco08/. The last mapping is
used in cases where the source contains repeated mappings; this is
inconsistent with the source since repeated mappings are ignored by the
used SPSS command. However, the mapping used by iscogen is consistent
with Stata script isko6888.ado (version 1.0 15jun2001) by
Hendrickx (2002a).

ISCO-68 -> ISEI

SPSS script iscoisei.sps provided by Harry Ganzeboom at
http://www.harryganzeboom.nl/isco68/. The source contains
range mappings that have been expanded to one-to-one mappings based on the
set of ISCO-68 codes found in iscolab.sps (plus code 3991 found in
isco6888.sps). Furthermore, ISEI values as printed in Ganzeboom et al. (1992)
are used in case of conflict due to repeated mappings in the source (affected
ISCO codes are: 2033, 2035, 9830, 9831, 9832, 9839); this is consistent with
Stata script iscoisei.ado (version 1.0 18jun2001) by
Hendrickx (2002a).

ISCO-68 -> SIOPS

SPSS script iscotrei.sps provided by Harry Ganzeboom at
http://www.harryganzeboom.nl/isco68/. The mapping is consistent
with Stata script iscotrei.ado (version 1.0 15jun2001) by
Hendrickx (2002a).

ISCO-68 -> EGP

egp(): Stata script iscoegp.ado (version 1.0 19jun2001) by
Hendrickx (2002a). The mapping
has been generated automatically by applying iscoegp.ado to all relevant
combinations of ISCO codes, self-employment status, and number
of subordinates or employees.

egp11(): SPSS script iscoegp.sps provided by Harry Ganzeboom at
http://www.harryganzeboom.nl/isco68/. The mapping
has been generated automatically by applying iscoegp.sps to all relevant
combinations of ISCO codes, self-employment status, and number
of subordinates or employees.

The main difference between egp() and egp11() is that
egp11() distinguishes between classes IIIa and IIIb whereas
egp() makes no such distinction; also note that different numeric codes
are used for classes IVa and IVb.

Labels

ISCO-08 labels

File structure08.docx
provided by the ILO at http://www.ilo.org/public/english/bureau/stat/isco/isco08/. The
source uses titlecase spelling; this has been changed to lowercase spelling.

ISCO-88 labels

isco88: ISCO-88 labels provided by the ILO at
http://www.ilo.org/public/english/bureau/stat/isco/isco88/major.htm. The
uppercase spelling of major, submajor, and minor groups has been changed to
lowercase spelling

isco88com: ISCO-88(COM) labels from file
ISCO88.xls provided by the Warwick Institute for Employment Research at
http://warwick.ac.uk/fac/soc/ier/research/classification/isco88; also see
Elias/Birch (1994).

isco88a: Variant of ISCO-88 labels by Ganzeboom/Treiman (1996)
obtained from SPSS script iskolab.sps available from
http://www.harryganzeboom.nl/isco88/. The Ganzeboom/Treiman
variant of ISCO-88 contains a few extra occupational codes compared to
the official variant by the ILO.

isco88b: Variant of ISCO-88 labels by Ganzeboom/Treiman (1996)
obtained from file scaleapp.htm
available from http://www.harryganzeboom.nl/isco88/. The Ganzeboom/Treiman
variant of ISCO-88 contains a few extra occupational codes compared to
the official variant by the ILO.

ISCO-68 labels

SPSS script iscolab.sps provided by Harry Ganzeboom at
http://www.harryganzeboom.nl/isco68/.

EGP labels

egp: Stata script iskoegp.ado (version 1.2 14Oct2004) by
Hendrickx (2002b).

egp11: SPSS script iskoegp.sps provided by Harry Ganzeboom at
http://www.harryganzeboom.nl/isco88/.

ESEC labels

SPSS script esec083digit.sps provided by Eric Harrison at
http://ekharrison.weebly.com/european-socio-economic-classification-esec.html.

OESCH labels

Stata script iskooesch.ado (version May 2018) by
Kaiser (2018).

Examples

Generate ISEI scores from ISCO-08 codes

. iscogen isei = isei(job)

Translate ISCO-88 to ISCO-08:

. iscogen job08 = isco08(job), from(isco88)

Transform 4 digit ISCO-08 unit groups to 2 digit submajor groups:

. iscogen isco2 = submajor(job)

Generate EGP classes from ISCO-08 codes

. iscogen EGP = egp11(job selfemp nemployees), from(isco88)

Assign ICSO-88(COM) labels to multiple variables

. iscoglbl isco88com job_mother job_father

Stored results

iscogen stores the following r():

Scalars

r(N) number of observations

r(N_matched) number of matched observations

r(N_unmatched) number of unmatched observations

r(N_missing) number of missing observations

r(N_invalid) number of invalid codes (only if invalid is specified)

r(labeled) 1 if labels have been assigned, 0 else

r(string) 1 if the generated variable is string format, 0 else

Macros

r(varname) name of the generated variable

r(from) classification of the input variable

r(to) target classification

r(isco) name of isco input variable

r(sempl) name of sempl input variable

r(supvis) name of supvis input variable

r(invalid) list of invalid codes (only if invalid is specified)

iscolbl stores the following r():

Macros

r(varlist) names of the labeled variables

r(lblnames) names of the labels

References

Christoph, B. 2005. Zur Messung des Berufsprestiges: Aktualisierung der
Magnitude-Prestigeskala auf die Berufsklassifikation ISCO88 [Measuring
occupational prestige: updating the magnitude-prestige-scale to ISCO88]. ZUMA
Nachrichten 29(57): 79-127. Available from
https://nbn-resolving.org/urn:nbn:de:0168-ssoar-207543.

Elias, P., M. Birch. 1994. Establishment of Community-Wide Occupational
Statistics. ISCO 88 (COM). A Guide for Users. Institute for Employment Research,
University of Warwick. Available from
https://warwick.ac.uk/fac/soc/ier/research/classification/isco88/isco88.pdf.

Erikson, R., J.H. Goldthorpe, L. Portocarero. 1979. Intergenerational Class Mobility
in Three Western European Societies: England, France and Sweden. British Journal
of Sociology 30(4): 415-441.

Erikson, R., J.H. Goldthorpe, L. Portocarero. 1983. Intergenerational Class
Mobility and the Convergence Thesis: England, France and Sweden. British
Journal of Sociology 34(3): 303-343.

Ganzeboom, H.B.G. 2010. International Standard Classification
of Occupations. ISCO-08. With ISEI-08 scores. Last revised: July 27
2010. Available from http://www.harryganzeboom.nl/isco08/.

Ganzeboom, H.B.G., P.M. De Graaf, D.J. Treiman. 1992. A Standard
International Socio-Economic Index of Occupational Status. Social Science
Research 21: 1-56.

Ganzeboom, H.B.G., D.J. Treiman. 1996. Internationally Comparable Measures
of Occupational Status for the 1988 International Standard Classification
of Occupations. Social Science Research 25: 201-239.

Geis, Alfons (2011). Handbuch für die Berufsvercodung. Stand: März 2011. Mannheim: GESIS. Available
from http://www.gesis.org/fileadmin/upload/dienstleistung/tools_standards/handbuch_der_berufscodierung_110304.pdf.

Harrison, E., D. Rose. 2006. The European Socio-economic Classification
(ESeC) User Guide. Institute for Social and Economic Research,
University of Essex. Available from
http://www.iser.essex.ac.uk/archives/esec/user-guide.

Hendrickx, J. 2002a. isco: Stata module to recode 4 digit ISCO-68 occupational
codes. Available from
http://ideas.repec.org/c/boc/bocode/s425801.html.

Hendrickx, J. 2002b. isko: Stata module to recode 4 digit ISCO-88 occupational
codes. Available from
http://ideas.repec.org/c/boc/bocode/s425802.html.

Kaiser, S. 2018. oesch: Stata module to recode ISCO codes into Oesch class
scheme. Available from
http://ideas.repec.org/c/boc/bocode/s458490.html.

Oesch, D. 2006a. Coming to Grips with a Changing Class Structure. An Analysis
of Employment Stratification in Britain, Germany, Sweden and Switzerland. International
Sociology 21(2): 263-288

Oesch, D. 2006b. Redrawing the Class Map. Stratification and Institutions
in Britain, Germany, Sweden and Switzerland. Palgrave Macmillan.

Treiman, D.J. 1977. Occupational Prestige in Comparative Perspective. New
York: Academic Press.

Author

Ben Jann, University of Bern, ben.jann@soz.unibe.ch

Thanks for citing this software as follows:

Jann, B. (2019). iscogen: Stata module to translate ISCO codes. Available from
http://ideas.repec.org/c/boc/bocode/s458665.html.