I am investigating whether earnings differences have widened between different social classes in several European countries by comparing two different periods. The picture below shows the findings of an interaction, here in the code:

lm(income  ~ class + age + head_sex + household_size + period*class, data = df)

The base category of the variable class is: upper-middle class. The interaction period*class shows whether the gap between any of the three shown social classes have widened relative to the upper-middle class between two different periods. The variable period is a binary variable (e.g., 2000 vs 2018).

The issue in this graph is that these countries have different currencies (dollar,euro, pound, zloty). This makes it difficult for the reader to make sense a bit of the results. For example, 389 zlotty is around $87, but if the reader is not familiar with that currency, they might not understand how large or small is this effect. Two possible solutions that i know could help with that but i do not want to use them for several reasons that i will not discuss here. First, to log the income variable. Second, to convert all currencies to one that is standardized across them, for example using the dollar as common currency.

I was wondering whether anyone has any advice on other solutions which i can use to communicate these results in a more intuitive way?

Is dividing these estimates by the median earnings of one period or the average of two periods would make sense? that way we might have a better feeling of how large are these differences within one country, but at the same time will be comparable across countries.

Any help would be greatly appreciated.

enter image description here

  • $\begingroup$ How would it help to take the logarithm of the currency value? I don't find it any easier to compare $\log(\text{euros})$ to $\log(\text{pounds})$ than directly comparing euros to pounds. $\endgroup$
    – Dave
    May 10 at 15:20
  • $\begingroup$ Then you can convert log earnings: (exp(earnings) - 1)*100, and the findings would be more comparable across countries. But maybe I am also wrong with this point... $\endgroup$
    – Jack
    May 10 at 15:24
  • $\begingroup$ Please give an example of that. I do not follow. $\endgroup$
    – Dave
    May 10 at 15:25
  • $\begingroup$ If you have an estimate of -0.5 and -0.4 log earnings for working class in Germany and Poland, respectively. Then you can say following the formula above, that earnings have widened by 39% and 33% in Germany and Poland between working class and upper-middle class. $\endgroup$
    – Jack
    May 10 at 15:28
  • $\begingroup$ Putting the numbers on a percent change scale is a viable approach and, I think, is common in financial applications where the concern is about percent return on an investment more than raw dollars (euros, pounds). $\endgroup$
    – Dave
    May 10 at 15:32

2 Answers 2


In my experience with econometric data, I always log monetary values (income, wealth, rent and so on). But, so far I only published in a more sociological venues and not econometric ones so I am not sure if that is a common practice in econometrics. The reason for the log is that in my experience (not with European countries data) these numbers are log normally distributed. You can check that quickly by doing a Q-Q plot for the log income.

Thus, if I am right regarding your data, you should take the log of the income. And there is an added bonus as you mentioned. The currency conversions are a multiplicative constant (if the rate is constant during the period) which will be incorporated into the Intercept using the log income. There, problem solved - all coefficient of the regression are comparable.

If the exchange rate is not constant for 2000 and 2018, then I think you should convert the local currencies to a single one, and then take the log (if the data distribution is log-normal)

  • $\begingroup$ Thank you for your answer. The main issue with including log is that there is a large share of respondents who reported zero as earnings. Since we cannot log zero, this means that I have to leave them out of the analysis which will bias the results $\endgroup$
    – Jack
    May 24 at 8:35
  • $\begingroup$ Does it make sense that their earnings were actually 0? If not, then omitting them from the analysis on earnings might be a feature, not a bug (i.e. your estimates will be more biased by including incorrect data signifying people have $0$ earnings than if you simply treated those as NA and then acted accordingly) $\endgroup$
    – PhysicsKid
    May 24 at 22:46
  • $\begingroup$ a) As mentioned, you have to decide whether the 0 income is really data or a missing value. If it is missing value, then you should probably remove the data (you do not want to taint your regression with an arbitrary value that indicates missing value). b) if 0 is really data, then the transformation is not log(income) but log(income+1). Then, 0 income gets transformed to 0 log income. $\endgroup$ May 24 at 23:48
  • $\begingroup$ Incomes of zero are plausible under several definitions of income. @Jad, will you share some of the data — and the metadata on how income was defined, how the data was sourced, and how zero and negative incomes were handled in producing the data? $\endgroup$
    – Matt F.
    May 26 at 5:31
  • $\begingroup$ Here is the definition: It refers to the monetary component of the compensation of employees in cash payable by an employer to an employee. It includes the value of any social contributions and income taxes payable by an employee or by the employer on behalf of the employee to social insurance schemes or tax authorities. Gross employee cash or near cash income includes the followings items: - Wages and salaries paid in cash for time worked or work done in main and any secondary or casual job(s); - Remuneration for time not worked (e.g. holiday payments); $\endgroup$
    – Jack
    May 26 at 8:23

Income Transformation

In this case it is helpful to remember the reason why these types of regressions and economic analyses use the log transformation, it is because it tends to make the residuals more normally distributed. The foundational assumption of the lm algorithm and parameter variance estimates is that the residuals are normally distributed. You can also see this thinking in discussions on Box-Cox transformations. Below is my personal heuristic for how to work through the various options. At each stage, you ask if the residuals form an approximate normal distribution and then stop. I use a quantile quantile plot to check normality primarily. If there is a question about whether some of the data values are missing, but recorded as zero, you have to solve that first.

  1. Check the residuals without transformation.
  2. Log transform Income. This is generally a good place to start if there are no zero or negative income values.
  3. Square root. Very much like the log transform and allows for zero income values.
  4. Cubed root or higher odd root. This is good in the case of positive and negative income values because you can preserve the sign.
  5. If you have reason to believe that one of these transformations works for the positive values, but the zeros fit differently, then you may require a mixture distribution or Bayesian model to handle this situation.
  6. If you find that the zeros are really a recording of an income below some threshold, like "below the poverty line", then you may want to switch to a censored data analysis like a Cox Proportional Hazard model or Accelerated Failure Model.

Transform the Monetary Values?

My answer to this is yes, you should transform the incomes to a constant dollar amount as long as the other variables mean something consistent across monetary types. Age, gender of the head of household, household size, and period all mean the mean same thing regardless of country. You also want their coefficient to mean the same thing (e.g. the increase in income due to an 1 year increase in age). Class might mean the mean the same thing across countries if a common distributional argument is used, or it might be dependent on country specific values. You might also consider including a country effect if you have sufficient degrees of freedom.

You should also consider transforming 2018 dollars into a constant inflation adjusted 2000 dollars. You may also have to adjust the class definitions depending on how that was done.

Graph Advice

I think the figure that you create should be central to the hypothesis you intend to test. I am investigating whether earnings differences have widened between different social classes in several European countries by comparing two different periods. In this case, it seems that you are testing the coefficient on period*class holding age, gender, and household size constant. In cases where you want to show the effect of an interaction variable, there are common ways to do that you could look up. Essentially people plot Income versus period with lines for two different classes. If you want to show this in a country-specific way, then you would want to add country to that interaction.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.