Ali Can Kocabiyikoglu
email: alicankocabiyikoglu@gmail.com

Laurent Besacier
email: laurent.besacier@univ-grenoble-alpes.fr

Olivier Kraif
email: olivier.kraif@univ-grenoble-alpes.fr

Augmenting Librispeech with French Translations: A Multimodal Corpus for Direct Speech Translation Evaluation

Keywords: direct speech translation, bilingual alignment, librispeech corpus

Recent works in spoken language translation (SLT) have attempted to build end-to-end speech-to-text translation without using source language transcription during learning or decoding. However, while large quantities of parallel texts (such as Europarl, OpenSubtitles) are available for training machine translation systems, there are no large (>100h) and open source parallel corpora that include speech in a source language aligned to text in a target language. This paper tries to fill this gap by augmenting an existing (monolingual) corpus: LibriSpeech. This corpus, used for automatic speech recognition, is derived from read audiobooks from the LibriVox project, and has been carefully segmented and aligned. After gathering French e-books corresponding to the English audio-books from LibriSpeech, we align speech segments at the sentence level with their respective translations and obtain 236h of usable parallel data. This paper presents the details of the processing as well as a manual evaluation conducted on a small subset of the corpus. This evaluation shows that the automatic alignments scores are reasonably correlated with the human judgments of the bilingual alignment quality. We believe that this corpus (which is made available online) is useful for replicable experiments in direct speech translation or more general spoken language translation experiments.

Introduction

Attention-based encoder-decoder approaches have been very successful in Machine Translation [START_REF] Bahdanau | Neural machine translation by jointly learning to align and translate[END_REF], and have shown promising results in Endto-End Speech Translation [START_REF] Bérard | Listen and translate: A proof of concept for endto-end speech-to-text translation[END_REF][START_REF] Weiss | Sequence-to-sequence models can directly transcribe foreign speech[END_REF] (translation from raw speech, without any intermediate transcription). End-to-End speech translation is also attractive for language documentation, which often uses corpora made of audio recordings aligned with their translation in another language (no transcript in the source language) [START_REF] Blachon | Parallel speech collection for under-resourced language studies using the LIG-Aikuma mobile device app[END_REF][START_REF] Adda | Breaking the unwritten language barrier: The Bulb project[END_REF][START_REF] Anastasopoulos | A case study on using speech-to-translation alignments for language documentation[END_REF]. However, while large quantities of parallel texts (such as Europarl, OpenSubtitles) are available for training (text) machine translation systems, there are no large (>100h) and open source parallel corpora that include speech in a source language aligned to text in a target language. For End-to-End speech translation, only a few parallel corpora are publicly available. For example, Fisher and Callhome Spanish-English corpora provide 38 hours of speech transcriptions of telephonic conversations aligned with their translations [START_REF] Post | Improved speechto-text translation with the fisher and callhome spanishenglish speech translation corpus[END_REF]. However, these corpora are only medium size and contain low-bandwidth recordings. Microsoft Speech Language Translation (MSLT) corpus also provides speech aligned to translated text. Speech is recorded through Skype for English, German and French [START_REF] Federmann | Microsoft speech language translation (mslt) corpus: The iwslt 2016 release for english, french and german[END_REF]. But this corpus is again rather small (less than 8h per language). Paper contributions. Our objective is to provide a large corpus for direct speech translation evaluation which is an order of magnitude bigger than existing corpora described in the introduction. For this, we propose to enrich an existing (monolingual) corpus based on read audiobooks called LibriSpeech. The approach is straightforward: we align ebooks in a foreign language (French) with the English utterances of LibriSpeech. This results in 236h of English speech automatically aligned to French translations at the utterance level 1 . Outline. This paper is organized as following: after presenting our starting point (Librispeech) in section 2., we describe how we aligned foreign translations to the speech corpus in section 3.. Section 4. describes our evaluation of a subset of the corpus (quality of the automatically obtained alignments). Finally, section 5. concludes this work and gives some perspectives.

Our Starting Point: Librispeech Corpus

Our starting point is LibriSpeech corpus used for Automatic Speech Recognition (ASR). It is a large scale corpus which contains approximatively 1000 hours of speech aligned with their transcriptions [START_REF] Panayotov | Librispeech: an asr corpus based on public domain audio books[END_REF]. The read audio book recordings derive from a project based on collaborative effort: LibriVox. The speech recordings are based on public domain books available on Gutenberg Project2 and are distributed with LibriSpeech as well as the original recordings. We start from this corpus3 because it has been widely used 1 Our dataset is available at https:// persyval-platform.univ-grenoble-alpes.fr/ DS91/detaildataset in ASR and because we believe it is possible to find the text translations for a large subset of the read audiobooks.

Aligning Foreign Translations to Librispeech

Overview

The main steps of our process are the following:

• Collect e-books in foreign language corresponding to English books read in Librispeech (section 3.2.),

• Extract chapters from these foreign books, corresponding to read chapters in Librispeech (section 3.3.),

• Perform bilingual text alignement from comparable chapters (section 3.4.),

• Realign speech signal with text translations obtained (section 3.5.).

These different steps are described in the next subsections.

Collecting Foreign Novels

LibriSpeech corpus is composed of 5831 chapters (from 1568 books) aligned with their transcriptions. We used the given metadata to search e-books in foreign language (French) corresponding to English books read in Librispeech. Firstly, we used DBPedia [START_REF] Auer | Dbpedia: A nucleus for a web of open data[END_REF] in order to (automatically) obtain title translations. Secondly, we used a public domain index of French e-books4 to find Web links matching titles we found. Then, we finished this process for the entire LibriSpeech corpus by manually searching for French novels in different public domain resources. Overall, we collected 1818 chapters (from 315 books) in French to be aligned with Librispeech. Some of the public domain resources that we used are: Gutenberg Project5 , Wikisource6 , Gallica7 , Google Books8 , BEQ9 , UQAC10 . Audiobooks available in LibriSpeech are of different literary genres: most of them are novels, however there are also poems, fables, treaties, plays, religious texts, etc. Belonging to the public domain, most of the texts are old and not available publicly in foreign language. Therefore, the novels that were collected in foreign language are mostly novels from world's classics. As few of them are ancient texts, some translations are in old French.

Chapters Extraction

LibriSpeech transcriptions are provided for each chapter.

As the readers only read a short period of time11 , transcriptions may correspond to incomplete chapters. For the same reason, books are not read entirely. Therefore, in order to obtain an alignment at the sentence level, a first step was to decompose English and French language books into chapters. This step was achieved by a semi-automatic process.

After converting books to text format (both English and French), regular expressions were used to identify chapter transitions. Then, each French chapter was extracted and aligned to its counterpart in English. After manual verification of all chapters, we obtained 1423 usable chapters (from 247 books).

Bilingual Text Alignement

The 1423 parallel chapters establish the comparable corpus from which we extracted bilingual sentences. This was done using an off-the-shelf bilingual sentence aligner called hunAlign [START_REF] Varga | Parallel corpora for medium density languages[END_REF]. HunAlign takes as input a comparable (not sentence-aligned) corpus and outputs a sequence of bilingual sentence pairs. It combines (Gale-Church) sentence-length information as well as dictionarybased alignment methods. Initial dictionary available for alignment was the default French-English (40k entries) lexicon created for LF Aligner12 (wrapper for hunAlign created by Andras Farkas). We enriched this dictionary by adding entries from other open source bilingual dictionaries. Different dictionaries (woaifayu, apertium, freedict, quick) from a language learning resource were gathered in various formats and adapted to hunAlign dictionary format13 . We finally obtained and used a dictionary of 128,000 unique entries.

In order to improve the quality of sentence level alignments, data had to be pre-processed. For English and French, our extracted chapters were cleaned with regular expressions. Then, we used Python NLTK [START_REF] Bird | Nltk: the natural language toolkit[END_REF] sentence split to detect sentence boundaries in the corpora. Furthermore, the bitexts were stemmed (removing suffixes to reduce data sparsity). Finally, parallel sentences found were brought back to their initial form with reverse stemming. This last step was done using Google's dif f -patch -match library [START_REF] Fraser | google-diff-match-patch-diff, match and patch libraries for plain text[END_REF].

English Sentence French Sentence

Oh, I beg your pardon! Oh! je vous demande bien pardon! A lane was forthwith opened through the crowd of spectators.

Un chemin fut alors ouvert parmi la foule des spectateurs.

No, "said Catherine," he is not here; I cannot see him anywhere.

-Non, dit Catherine, il n'est pas ici. Jamais je ne parviens à le rencontrer.

Realigning Speech Signal with Text Translations

In order to associate parallel sentences to speech signal transcriptions, realignment of speech segments of Lib-riSpeech was necessary. This realignment is a two step process: first, we forced aligned Librispeech English transcripts to match English sentences obtained in the previous stage ; secondly, we resegmented the speech signal according to new sentence splits.

For the first step, we used mweralign, a tool for realigning texts in a same language but with a different sentence tokenization [START_REF] Matusov | Evaluating machine translation output with automatic sentence segmentation[END_REF]. We applied mweralign to realign our speech transcriptions in English to the English sentences of our bilingual corpus obtained in section 3.4.. The outcome of this first step is a new sentence segmentation for our English transcriptions that are now correctly aligned to our French translations. The second step was to resegment the speech signals to match them to the new sentence segmentation. We did that by:

• creating a big wav file by concatenating speech segments for each chapter,

• re-aligning the large speech wav signal to the transcripts using gentle 14 toolkit, an off-the-shelf English forced-aligner based on Kaldi ASR toolkit [START_REF] Povey | The kaldi speech recognition toolkit[END_REF],

• re-segmenting speech according to the desired sentence split. for evaluation. These chapters were chosen according to their average alignment scores (from hunalign). We chose two chapters that were near the mean of overall alignment scores (hypothesized medium quality alignments), one chapter which was above the mean score (hypothesized good quality alignment) and a final chapter below mean score (hypothesized bad quality alignment). These sentences were evaluated by three annotators. We established a scale from 1 to 3 to judge matching quality between English speech and English transcriptions. This 3-step scale is precise enough because few errors were found in speech alignments. We established a scale from 1 to 5 to judge quality between bilingual text alignments. Overall, 200 sentences were evaluated (on both scales) by 3 annotators. We give, as example below, sentences for each mark (1-5) for human evaluation of bilingual alignments. Two different dimensions are evaluated at the same time: the accuracy of alignment (an alignment can be wrong, partial or correct) and the fact that translational equivalence is compositional and may be isolated from the current context.

•

Results

Table 4. reports our human evaluations for the 4 chapters.

The first thing that we can notice is that the alignment quality is higher for chapters with higher confidence scores. The first evaluation (speech alignement ; scale 1-3) shows an average score of 2.89/3 which confirms that our resegmentation of speech signals worked correctly. The second evaluation (bilingual alignment ; scale 1-5) shows an average score of 3.84/5. Some sentences were found uncorrectly aligned but overall, the alignment quality can be considered as correct. The main reason why the average alignment score varies between chapters is reflected by the translations compositionnality. Also, the dictionary that we used for bilingual alignments is inadequate for old texts and results in lower overall confidence scores. We also computed automatic correspondence scores obtained with a cross-language textual similarity detection between transcriptions and their translations [START_REF] Ferrero | A multilingual, multi-style and multi-granularity dataset for cross-language textual similarity detection[END_REF]. Our idea was to add another automatic score in addition to hunalign score. We computed the correlation between human evaluation scores and hunalign scores and obtained a correlation of 0.41. The same correlation was obtained between human evaluation scores and those obtained automatically with method of [START_REF] Ferrero | A multilingual, multi-style and multi-granularity dataset for cross-language textual similarity detection[END_REF]. This shows that automatic alignment scores are reasonably correlated with human judgments and could be used to extract a subset of the best alignments by ranking them according to hunalign score for instance.

Conclusion

We have presented a large corpus (236h) which is an augmentation of Librispeech in order to provide a bilingual speech-text corpus for direct (end-2-end) speech translation experiments. The methodology described here could be used in order to add other languages than French (German, Spanish, etc.) to our augmented Librispeech. The current corpus contains several ancient texts, so it would also be interesting to extend it to other kinds of corpora: different speaking styles (not only read speech), more contemporary texts, etc. For direct speech translation experiments, preliminary experiments have been done recently and will be presented at next ICASSP 2018 conference [START_REF] Bérard | End-to-end automatic speech translation of audiobooks[END_REF]. Our online repository15 provides a data split for speech translation experiments and results show that it is possible to train compact and efficient end-to-end speech translation models in this setup, but the dataset is challenging (BLEU score around 15 for direct speech translation task -more details in [START_REF] Bérard | End-to-end automatic speech translation of audiobooks[END_REF]).

Table 2 :

 2 Examples of parallel sentences obtained from comparable corpora made up of aligned book chapters Table2. shows examples of 3 bilingual sentences obtained from 3 different chapters.

Table 3

 3 , we also added En-Fr machine translation output of our English transcripts (Google Translate). So we have 2 French translations in the end (a correct one from automatic alignement ; a noisy one from MT).

	Chapters Books Duration (h) Total Segments
	1408	247	~236h	131395
	Table 3: Statistics of the final multimodal and bilingual cor-
	pus obtained (English speech aligned to French text)
	4. Human Evaluation of a Corpus Subset
	4.1. Protocol
	Now that we have obtained a multimodal alignment be-
	tween (English) speech signals and (French) translations,
	we want to evaluate its quality. At this point, the only score
	available is the confidence score given by hunalign indi-
	cating confidence for aligned sentences. One goal of this
	human evaluation, that can only be made on a corpus sub-
	set, is to see if hunalign score has a good correlation with
	human judgements.
	50 sentences from 4 different chapters have been chosen

. presents and overview of final data (speech with aligned translations) obtained after this final step. For each 14 https://github.com/lowerquality/gentle sentence pair

Table 4 :

 4 Results of human evaluation by 3 annotators. Kappa's Cohen (weighted) for inter annotator agreement for textual alignment is 0.76 French: Mais il paraît que tu préfères être courtisée avec l'arc et la hache, plutôt qu'avec des phrases polies et avec la langue de la courtoisie.

	1. Wrong alignment
	English: COMMIT TO ME I SHALL LET PASS
	NO ADVANTAGE
	French: Je sais, par exemple, que maintenant il
	souffre de la faim dans un vaste désert, où l'on ne
	saurait trouver de nourriture.
	• 2. Partial alignment with slightly compositional trans-
	lational equivalence
	English: THAN IN SET TERMS AND IN
	COURTLY LANGUAGE

https://www.gutenberg.org/

Another dataset could have been used: TED Talks -see https://www.ted.com -but we considered it was be better to start with a read speech corpus for evaluating End-2-End speech translation.

https://www.noslivres.net/

http://www.gutenberg.org/

http://www.wikisource.org/

http://gallica.bnf.fr/

http://books.google.com

http://beq.ebooksgratuits.com

http://www.uqac.ca/

One goal of Librispeech was to have as many speakers as possible

https://sourceforge.net/projects/ aligner/

https://polyglotte.tuxfamily.org

see https://persyval-platform. univ-grenoble-alpes.fr/DS91/detaildataset


Pierre Barral
email: pierre.barral@student.ecp.fr

Mehdi Senouci
email: mehdi.senouci@centralesupelec.fr

Walking on two legs: Growth accounting with labor-saving and capital-saving technical

Keywords: Productivity, factor-saving technical change, capital accumulation. JEL codes: E25, O33, O40, O47

We present an alternative to growth accounting à la Solow, on the same set of variables, that provides a metric for labor-saving technical change ('λ') and capital-saving technical change ('µ'). These two components are identified through the variations of the factor shares, which we assume to reflect marginal productivities. We run our algorithm using BEA data from 1948 to 2015, and compare the predictive power of our time series of (λ t , µ t ) with the one of the Solow residual. Through simple regressions, we find: (i ) that λ and µ are as good predictors of the growth rate of GDP per capita as the Solow residual, and (i i ) that λ and µ, together with capital accumulation, are strong predictors of the variation of the factor shares, while the Solow residual is not. We conclude that a bi-dimensional representation of productivity has a stronger empirical relevance than the usual linear representation; however the former carries some different theoretical properties than the latter -notably on the consequences of capital accumulation.

Introduction

Although the issue of factor-saving technical change has received considerable attention by industry analysts as well as by macroeconomic historians, no consensus has emerged on the proper way to represent it nor to estimate it. This paper aims at partially filling the latter gap 1 by introducing a new -and, to the best of our knowledge, the first -method to assess labor-saving technical change and capital-saving technical change from the very same set of observables than the ones used in the seminal paper by [START_REF] Solow | Technical Change and the Aggregate Production Function[END_REF]: the output-labor ratio (y t ), the capital-labor ratio (k t ) and the labor share (1 -α t ).

As one of us has argued in a previous article, 2 in a framework with two inputs A andB , 'A-saving technical change' is best defined as the transition to a production function that yields more output than the original one for lower values of relative inputs A/B . 'B -saving technical change' then denotes the transition to a production function that yields more output than the original one for higher values of relative inputs A/B .

The basic problem of growth accounting can be stated as follows: how can we infer the changes in the production function between dates 0 and 1 with data only on output, inputs and input share of income at each date? To address this question, one has to make some assumptions.

Figure 1 represents the problem of growth accounting with a reproducible factor of production (capital) and a non-reproducible one (labor). Observable data consists of the capital-labor ratio k , the output-labor ratio y and the labor share of income (1 -α) at dates 0 and 1.

The classical answer to that problem is [START_REF] Solow | Technical Change and the Aggregate Production Function[END_REF] method, which is summarized on figure 2, which consists in inferring that both production functions f 0 and f 1 are both Cobb-Douglas, and then measure the gap between both functions which is called the Solow residual. With the additional assumption that inputs are paid their marginal product, the Solow residual measures the contribution of total factor productivity (TFP) growth to output growth, as opposed to the contribution of capital accumulation.

One reason for the success of Solow's method probably lies in the result that the residual is 2 Senouci (2014). responsible for the bulk of growth. This empirical regularity is in line with the key prediction of neoclassical growth theory: growth can be sustained only by the accumulation of a factor that is not subject to diminishing marginal returns. Another reason is the great literature that followed which split up the Solow residual in different components, reducing our ignorance on the causes of growth. 3 By limiting the manifestations of technical change to variations of TFP, Solow's accounting method does not aim at explaining the variations of factor shares. The theoretical assumption of orthogonality between TFP and factor shares has been put into serious doubt by the global decline of the labor share starting in the early 1980's and which is suspected to be driven by technological change itself. 4 Our growth accounting method, in contrast, takes variations of the labor share very seriously. 5 It yields two series, rather than one. Labor-saving technical change (LSTC) tends to decrease the labor share, while capital-saving technical change (KSTC) tends to increase the labor share. Both LSTC and KSTC tend to increase GDP per capita. Running our algorithm on Solow data and on US data from the Bureau of Economic Analysis (BEA) and between 1948 and 2015, it comes out that: 3 For instance, [START_REF] Mankiw | A Contribution to the Empirics of Economic Growth[END_REF] assessed the contribution of human capital to TFP growth, while [START_REF] Greenwood | Long-Run Implications of Investment-Specific Technological Change[END_REF] assessed the contribution of TFP growth in the investment-goods sector to overall TFP growth. 4 Karabarbounis and Neiman (2014) document the global decline of the labor share. [START_REF] Bengtsson | Capital Shares and Income Inequality: Evidence from the Long Run[END_REF] investigate the long-run links between the capital share and top income shares. Acemoglu and Retrespo (2017) present evidence supporting the view that industrial robots tend to decrease employment and earnings of competing workers. 5 Another growth accounting method interpreting changes in the labor share as the reflection of some bias of technical change has been developed by [START_REF] Sturgill | Back to the basics: Revisiting the development accounting methodology[END_REF] and [START_REF] Sturgill | Variable factor shares and the index number problem: a generalization[END_REF], but their method is plagued by an index number problem that makes the estimates dependent on the unit of measure of capital.

The model and the growth accounting procedure

Our method is depicted on figure 3. The observations set consists of (k 0 , y 0 , α 0 ) and (k 1 , y 1 , α 1 ). We interpret the passage from the situation at t = 0 to the situation at t = 1 as the passage from production function f 0 to two production functions, f λ and f µ .

Function f λ results from a anti-clockwise rotation of f 0 . This means that: So f λ yields more output than the original production function if and only if the capital-labor ratio increases. Consequently, the passage from f 0 to f λ stands for LSTC.

∀k > 0, f λ (k ) < f 0 (k ) ⇔ k < k 0 f λ (k ) > f 0 (k ) ⇔ k > k 0
Function f µ is a clockwise rotation of f 0 , meaning:

∀k > 0, f µ (k ) > f 0 (k ) ⇔ k < k 0 f µ (k ) < f 0 (k ) ⇔ k > k 0
f µ is more efficient than f 0 for capital-labor ratios lower than k 0 , so the passage from f 0 to f µ stands for KSTC.

We assume that at date t = 1, the economy uses both production functions f λ and f µ . Our growth accounting procedure consists in inferring the 'amounts of rotation' λ and µ from the set of observables.

What are the efficient production plans when two production functions f λ and f µ are available?

The answer is represented on figure 4. As shown in [START_REF] Jones | The Shape of the Production Function and the Direction of Technical Change[END_REF], the aggregate production function is the convex envelope of functions f λ and f µ . For low capital-labor ratios (k < k ), the efficient production plan consists in putting all inputs in production function f µ . For high capital-labor ratios (k > k ), the efficient production consists in putting all inputs in production function f λ . For intermediate capital-labor ratios (k < k < k ), both technologies are used. The capital-labor ratio in the µ-industry is then k and the capital-labor ratio in the λ-industry is k , where k and k are the solutions to the system:

f µ (k ) = f λ (k ) f µ (k ) -k f µ (k ) = f λ (k ) -k f λ (k ) (1)
We call f 1 the convex envelope of f λ and f µ . To account for the passage from f 0 to f 1 , we need to estimate f λ and f µ . To do so, we need to restrict ourselves to some subset of production functionswhich is what we do in the next two sections. But before that, some remarks are worth making.

First, our algorithm to estimate f λ and f µ can be understood graphically in a simple way in the (k , y ) plane. We describe it in steps:

1-Locate the point (k 0 , y 0 ) and draw production function f 0 that has slope α 0 y 0 /k 0 (the shape of f 0 is part of the assumptions);

2-Locate the point (k 1 , y 1 ) and draw the line of slope α 1 y 1 /k 1 that passes through (k 1 , y 1 ); call this line D 1 ;

3-Rotate f 0 anti-clockwise around (k 0 , y 0 ) until the rotated function touches D 1 . This amount of rotation is λ;

4-Rotate f 0 clockwise around (k 0 , y 0 ) until the rotated function touches D 1 . This amount of rotation is µ.

Secondly, not all sets of observables (k 0 , y 0 , α 0 ; k 1 , y 1 , α 1 ) are interpretable this way. For instance, if k 1 = k 0 and y 1 < y 0 , we could not find some λ and some µ such that the data could be interpreted as the passage from one production function to the convex envelope of two rotated production functions (let's call this process 'rotation-convexification'). Figure 5 represents cases where the above graphical method would fail. Indeed, the above method works under two assumptions:

A1 -The D 1 line cuts the vertical axis below y 0 , or:

(1 -α 1 )y 1 < y 0 A2 -The D 1 line is above y 0 at k 0 , or:

y 1 + k 0 -k 1 k 1 α 1 y 1 > y 0
Although assumption A1 is always realized in practice, assumption A2 is not. We set up a method for the cases where A2 does not hold in subsection 1.1.

Thirdly and finally, it should be noted that there is some theoretical inconsistency in our growth accounting procedure. Indeed, when performing our algorithm between dates t = 0 and 1, we assume that technology switches from one to two production functions. However, when performing the same algorithm between dates t = 1 and 2, we assume that date-1 technology consists of only one production function, while date-2 technology consists of two production functions. We do not assume that date-2 technology consists of four production functions, as the reader might expect.

The merit of our method, as we shall argue in section 3, lies in the information contained in our estimated series for (λ t , µ t ).

The identification of λ and µ under ¬A2

Whenever A2 does not hold, we use a time-inversion method. The idea is that if we canot account for the transition from t = 0 to t = 1 through some (λ, µ), then we can account for a hypothetical transition from t = 1 to t = 0 for some (λ , µ ). We then define λ = -λ < 0 and µ = -µ ∈ (-1, 0).

We can account for the transition from t = 1 to t = 0 through some (λ , µ ) if and only if:

A1 -(1 -α 0 )y 0 < y 1 A2 -y 0 + k 1 -k 0 k 0 α 0 y 0 > y 1
Indeed, in the data, assumption A1 is always valid and assumption A2 holds exactly when assumption A2 does not hold.6

Properties of λ and µ

Before implementing our growth accounting procedure, we state below how t = 1 observations influence the estimates of λ and µ.

Proposition 1.

∂ λ ∂ k 1 < 0 , ∂ µ ∂ k 1 < 0 ∂ λ ∂ y 1 > 0 , ∂ µ ∂ y 1 > 0 ∂ λ ∂ α 1 > 0 , ∂ µ ∂ α 1 < 0 Proof. Obvious from graphical analysis.

The implementation of the growth accounting method

We now see how to implement numerically our procedure when production functions belong to specified families.

The method with Cobb-Douglas production functions

Under A2

If f 0 , f λ and f µ are Cobb-Douglas, then:

∀k > 0,      f 0 (k ) = y 0 k k 0 α 0 f λ (k ) = y 0 k k 0 α λ f µ (k ) = y 0 k k 0 α µ (2)
with α λ = α 1-λ 0 and α µ = α 1+µ 0 . We are looking for λ ∈ (0, 1) and µ > 0 such that there exist some k and k such that:

f µ (k ) = f λ (k ) = α 1 y 1 k 1 f µ (k ) -k f µ (k ) = f λ (k ) -k f λ (k ) = (1 -α 1 )y 1 (3)
System (3) has four equations and four unknown α λ , α µ , k , k . The following proposition reduces the system to one equation with two solutions:

Proposition 2. Under A1 and A2, α λ and α µ are the solutions of equation:

(1 -X ) 1 α 1 k 1 k 0 X X 1-X = (1 -α 1 ) y 1 y 0 1 1-X (4)
and: λ = 1 -ln α λ ln α 0 and µ = ln α µ ln α 0 -1.

Proof. See appendix A.

Under ¬A2

When assumption A2 is not valid, we apply our time-inversion method. When assumptions A1

and A2 are valid, we apply the above method to find some µ ∈ (0, 1) and λ that account for the transition from t = 1 observations to t = 0 observations. Proposition 3. Under A1 and A2 , α λ and α µ are the solutions of equation:

(1 -X ) 1 α 0 k 0 k 1 X X 1-X = (1 -α 0 ) y 0 y 1 1 1-X (5) and λ = 1 - ln α λ ln α 1 and µ = ln α µ ln α 1 -1.
Proof. Proposition 2 applied to observations (k 1 , y 1 , α 1 ) and (k 0 , y 0 , α 0 ), i.e. to time-inverted data.

We then take λ = -λ and µ = -µ as respectively the measures of LSTC and KSTC between dates t = 0 and t = 1.

Summary

To summarize, we obtain our metric of LSTC (λ) and KSTC (µ) with Cobb-Douglas productions function with the following method, that we apply for each couple of consecutive dates (t , t + 1):

1. If assumptions A1 and A2 are jointly met, then solve equation ( 4):

(1 -X ) 1 α t +1 k t +1 k t X X 1-X = (1 -α t +1 ) y t +1 y t 1 1-X
Roots are α λ,t > α µ,t . Then, we define:

λ t = 1 - ln α λ,t ln α t µ t = ln α µ,t ln α t - 1
2. If assumptions A1 and A2 are not jointly met, then if A1 and A2 are jointly met; then solve equation 5:

(1 -X ) 1 α t k t k t +1 X X 1-X = (1 -α t ) y t y t +1 1 1-X
Roots are α λ ,t > α µ ,t . Then, we define:

λ t = ln α λ ,t ln α t +1 -1 µ t = 1 - ln α µ ,t ln α t +1
3. If neither (A1 and A2) nor (A1 and A2 ) are jointly met, then our method does not apply.

We implement this procedure using Python. The program is available in appendix C.

The method with CES production functions

We implement a similar procedure under the assumption that the production functions are CES rather than Cobb-Douglas.

Moysan and Senouci (2016) proved that for any k * > 0, y * > 0, and α * ∈ (0, 1), the only CES

production function f of parameter σ such that f (k * ) = y * and k * f (k * ) / f (k * ) = α * is defined by: ∀k > 0, f (k ) = y * α * k k * σ-1 σ + 1 -α * σ σ-1 (6)
We invoke this result below.

Under A2

We now assume that f 0 , f λ and f µ are CES production functions with the same elasticity of substitution σ ∈ (0, 1). Specifically:

∀k > 0,            f 0 (k ) = y 0 α 0 k k 0 σ-1 σ + 1 -α 0 σ σ-1 f λ (k ) = y 0 α λ k k 0 σ-1 σ + 1 -α λ σ σ-1 f µ (k ) = y 0 α µ k k 0 σ-1 σ + 1 -α µ σ σ-1 (7)
with 0 < α µ < α 0 < α λ < 1 and α λ = α 1-λ 0 and α µ = α 1+µ 0 . We are looking for the values of λ and µ such that there exists some k and k such that:

f µ (k ) = f λ (k ) = α 1 y 1 k 1 f µ (k ) -k f µ (k ) = f λ (k ) -k f λ (k ) = (1 -α 1 )y 1 ( 8
)
where f 0 , f λ and f µ are defined in [START_REF] Mankiw | A Contribution to the Empirics of Economic Growth[END_REF].

Proposition 4. Under A1 and A2, assuming CES production functions of parameter σ ∈ (0, 1), α λ and α µ are the solutions of equation:

(1 -α 1 ) σ-1 y 1 y 0 σ-1 = X σ 1 -α 1 α 1 σ-1 k 1 k 0 σ-1 + (1 -X ) σ ( 9
)
and: λ = 1 -ln α λ ln α 0 and µ = ln α µ ln α 0 -1.

Proof. See appendix B.

Under ¬A2

When assumption A2 does not hold, we apply again our time-inversion method. If A1 and A2

hold, then there exist some λ > 0 and µ ∈ (0, 1) that account for the transition from t = 1 observations to t = 0 observations. We then take λ = -λ and µ = -µ .

Proposition 5. Under A1 and A2 , assuming CES production functions of parameter σ ∈ (0, 1), α λ and α µ are the solutions of equation:

(1 -α 0 ) σ-1 y 0 y 1 σ-1 = X σ 1 -α 0 α 0 σ-1 k 0 k 1 σ-1 + (1 -X ) σ ( 10
)
and: λ = 1 -

ln α λ ln α 1 and µ = ln α µ ln α 1 -1.
Proof. Proposition 4 applied to observations (k 1 , y 1 , α 1 ) and (k 0 , y 0 , α 0 ), i.e. to time-inverted data.

Like in the Cobb-Douglas case, we then take λ = -λ < 0 and µ = -µ ∈ (-1, 0) as respectively the measures of LSTC and KSTC between dates t = 0 and t = 1.

Summary

The procedure with CES production functions of parameter σ ∈ (0, 1) is:

1. If assumptions A1 and A2 are jointly met, then solve equation ( 9):

(1 -α t +1 ) σ-1 y t +1 y t σ-1 = X σ 1 -α t +1 α t +1 σ-1 k t +1 k t σ-1 + (1 -X ) σ
Roots are α λ,t > α µ,t . Then, we define:

λ t = 1 - ln α λ,t ln α t µ t = ln α µ,t ln α t - 1
2. If assumptions A1 and A2 are not jointly met, then if A1 and A2 are jointly met; then solve equation ( 10):

(1 -α t ) σ-1 y t y t +1 σ-1 = X σ 1 -α t α t σ-1 k t k t +1 σ-1 + (1 -X ) σ
Roots are α λ ,t > α µ ,t . Then, we define:

λ t = ln α λ ,t ln α t +1 -1 µ t = 1 - ln α µ ,t ln α t +1
3. If neither (A1 and A2) nor (A1 and A2 ) are jointly met, then our method does not apply.

We also implement this procedure using Python. The program is available in appendix D.

3 λ and µ in US data and their empirical content

Data

We run our algorithm on two datasets: the first is simply [START_REF] Solow | Technical Change and the Aggregate Production Function[END_REF] The capital stock data ('K ') -the one with the greatest conceptual and practical measurement problems -is taken from the BEA Fixed Assets database. 8Aggregate worked hours ('L ') data is taken from the Federal Reserve Economic Data (FRED) database. 9Then, we define y = Y /L as real GDP per manhour, k = K /L as the capital-labor ratio and α = 1 -β as the capital share.

Results

We run our algorithm (Cobb-Douglas version) and the traditional Solow (1957) algorithm on both datasets. The results are displayed on figures 6 and 7. It comes out that, for all dates (t , t +1), either assumptions (A1, A2) or assumptions (A1 , A2 ) hold, and they never hold jointly, so our algorithm yields uninterrupted and unambiguous series for λ and µ.

The most striking feature of the output of our algorithm is that our measures of technical change λ and µ are extremely well-correlated with each other, as well as with the growth rate of real GDP per capita (∆y /y ) and with the Solow residual (∆A/A), reflecting the predominantly neutral nature of technical change, i.e. the low variance of α in both datasets.

Explanatory power of λ and µ

First, we assess the explanatory power of (λ, µ) over (∆y /y ). We perform three OLS regressions on each of the dataset we use. As table 1 shows for the Solow (1957) dataset, (λ, µ) are as good predictors of the growth rate of real GDP per capita as the Solow residual. When the growth rate of capital per manhour (∆k /k ) is added to the set of explanatory variables, the R 2 reaches 93%. In the [START_REF] Solow | Technical Change and the Aggregate Production Function[END_REF] dataset (table 3), the Solow residual is not significant in all the regressions where it is included while, λ and µ taken together are strong predictors of ∆α.

In the 1948-2015 dataset (table 4), the Solow residual is a significant predictor of ∆α, but the explanatory power of λ, µ and ∆k /k far exceeds that of ∆A/A. Morover, when the regression is augmented with the growth rate of the capital-labor ratio, it has a positive and significant effectconsistently with the model that underlies our growth accounting method -and the regression reaches an adjusted R 2 of 82%.

Conclusion

We attempted to measure LSTC and KSTC through a method that treat both directions of technical change symmetrically. We have come to invoke rotations of the production function -rather than shifts -as the manifestation of technical change, in the vein of some theoretical literature on economic growth. 10 Our estimates of LSTC and KSTC are very strong predictors of the growth rate of real GDP per capita and of the variations of the factor shares.

In future research, we plan to investigate technical change at the sector level through inputoutput matrices.

A Proof of proposition 2

For a set of observations (k 0 , y 0 , α 0 , k 1 , y 1 , α 1 ) that satisfies assumptions A1 and A2, α λ , α µ , k and k are the solutions of the system:

( ) : f µ (k ) = f λ (k ) = α 1 y 1 k 1 f µ (k ) -k f µ (k ) = f λ (k ) -k f λ (k ) = (1 -α 1 )y 1 ( ) ⇐⇒ y 0 k 0 α µ k k 0 α µ -1 = y 0 k 0 α λ k k 0 α λ -1 = α 1 y 1 k 1 (1 -α µ )y 0 k k 0 α µ = (1 -α λ )y 0 k k 0 α λ = (1 -α 1 )y 1 ( ) =⇒    (1 -α µ ) 1 α 1 k 1 k 0 α µ α µ 1-α µ = (1 -α 1 ) y 1 y 0 1 1-α µ (1 -α λ ) 1 α 1 k 1 k 0 α λ α λ 1-α λ = (1 -α 1 ) y 1 y 0 1 1-α λ Then, α λ = α 1-λ 0 ⇒ λ = 1 -ln α λ / ln α 0 and α µ = α 1+µ 0 ⇒ µ = ln α µ / ln α 0 -1.

B Proof of proposition 4

By definition of functions f λ an f µ :

∀k > 0,                    f µ (k ) = y 0 α µ k 0 k k 0 -1 σ α µ k k 0 σ-1 σ + 1 -α µ 1 σ-1 f λ (k ) = y 0 α λ k 0 k k 0 -1 σ α λ k k 0 σ-1 σ + 1 -α λ 1 σ-1 f µ (k ) -k f µ (k ) = (1 -α µ )y 0 α µ k k 0 σ-1 σ + 1 -α µ 1 σ-1 f λ (k ) -k f λ (k ) = (1 -α λ )y 0 α λ k k 0 σ-1 σ + 1 -α λ 1 σ-1
System (8) is, then, equivalent to:

                       α µ y 0 k 0 k k 0 -1 σ α µ k k 0 σ-1 σ + 1 -α µ 1 σ-1 = α 1 y 1 k 1 α λ y 0 k 0 k k 0 -1 σ α λ k k 0 σ-1 σ + 1 -α λ 1 σ-1 = α 1 y 1 k 1 y 0 (1 -α µ ) α µ k k 0 σ-1 σ + 1 -α µ 1 σ-1 = (1 -α 1 )y 1 y 0 (1 -α λ ) α λ k k 0 σ-1 σ + 1 -α λ 1 σ-1 = (1 -α 1 )y 1
Combining the first and third equations, as well as the second and fourth equations above, we get rid of unknown k and k :

(1 -α 1 ) σ-1 y 1 y 0 σ-1 = α σ µ 1-α 1 α 1 σ-1 k 1 k 0 σ-1 + (1 -α µ ) σ (1 -α 1 ) σ-1 y 1 y 0 σ-1 = α σ λ 1-α 1 α 1 σ-1 k 1 k 0 σ-1 + (1 -α λ ) σ
k1 = df [ ' k ' ] . s h i f t ( -1) a1 = df [ ' a ' ] . s h i f t ( -1) df [ ' y _ s h i f t e d ' ] = y1 df [ ' k _ s h i f t e d ' ] = k1 df [ ' a _ s h i f t e d ' ] = a1 y0 = df [ ' y ' ] k0 = df [ ' k ' ]
r e t u r n (1-x ) * L [ 0 ] * ( L [ 0 ] * x / ( L [ 4 ] * L [ 1 ] * L [ 2 ] / L [ 3 ] ) ) * * ( x /(1 -x )) -(1 -L [ 4 ] ) * L [ 1 ]
def p a r a m e t e r _ l i s t ( df , n ) : #rend l a l i s t e L bien ordonnee i f df [ ' ti me _r e gu la r ' ] [ n ] : r e t u r n f u n c t i o n _ s o l _ k ( x , p a r a m e t e r _ l i s t ( df , i ) , alpha_mu ) df_out = df . l o c [ : , ( ' annee ' , ' y ' , ' k ' , ' a ' , ' a_mu ' , ' a_lambda ' , ' a_mu ' , ' a_lambda ' , ' mu_lin ' , ' lambda_lin ' , ' t i m e _ r e g u l a r ' ) ] # r e t i r e l e s colonnes i n u t i l e s ( s h i f t ) df_out . columns = [ ' annee ' , ' y ' , ' k ' , ' a ' , ' a_mu ' , ' a_lambda ' , ' a_mu / ' , ' a_lambda / ' , ' mu_lin ' , ' lambda_lin ' , ' t i m e _ r e g u l a r ' ] #renome f o r i in range ( len ( df_out ) ) : #met des nan dans l e s colonnes qui n ' ont pas s e r v i e s a cause du t i m e _ r e g u l a r i f df_out . l o c [ i , ' ti me _r e g u l a r ' ] :

r e t u r n [ df [ ' y ' ] [ n ] , df [ ' y _ s h i f t e d ' ] [ n ] , df [ ' k ' ] [ n ] , df [ ' k _ s h i f t e d ' ] [ n ] , df [ ' a _ s h i f t e d ' ] [ n ] ] e l s e : r e t u r n [ df [ ' y _ s h i f t e d ' ] [ n ] , df [ ' y ' ] [ n ] , df [ ' k _ s h i f t e d ' ] [ n ] , df [ ' k ' ] [ n ] , df [ ' a ' ] [ n ] ]

Figure 1 :

 1 Figure 1: The classical growth accounting problem.

Figure 2 :

 2 Figure 2: Growth accounting à la Solow (1957).

Figure 3 :

 3 Figure 3: Our growth accounting method. λ represents labor-saving technical change and µ represents capital-saving technical change.

Figure 4 :

 4 Figure 4: f 1 as the convex envelope of f λ and f µ .

Figure 5 :

 5 Figure 5: Some cases where our method cannot account for the passage from t = 0 observations to t = 1 observations. Large dots and arrows represent examples of such t = 1 observables.

Figure 6 :

 6 Figure 6: Estimates of LSTC (λ) and KSTC (µ) on right-hand scale, growth rate of real GDP and Solow residual on lefthand scale, 1909-1949, assuming Cobb-Douglas core production functions. Data from Solow (1957).

Figure 7 :

 7 Figure 7: Estimates of LSTC (λ) and KSTC (µ) on right-hand scale, growth rate of real GDP and Solow residual on left-hand scale, 1948-2015, assuming Cobb-Douglas core production functions. Data from BEA-NIPA and FED-FRED datasets (see subsection 3.1).13

which proves proposition 4 .C

 4 The program with Cobb-Douglas production functions import pandas as pd import numpy as np import m a t p l o t l i b . pyplot as p l t import openpyxl from s c i p y . optimize import f s o l v e import m a t p l o t l i b . patches as mpatches df = pd . r e a d _ e x c e l ( open ( ' C l a s s e u r 3 . x l s x ' , ' rb ' ) ) dfadd = pd . DataFrame ( { ' y _ s h i f t e d ' : [ ] , ' k _ s h i f t e d ' : [ ] , ' a _ s h i f t e d ' : [ ] , ' a_lambda ' : [ ] , 'a_mu ' : [ ] , ' ti m e _ r e g u l a r ' : [ ] , } ) df = df . j o i n ( dfadd ) p r i n t ( df . head ( ) ) y1 = df [ ' y ' ] . s h i f t ( -1)

  t i m e _ r e g u l a r = y0 < y1+a1 * y1 * ( k0-k1 ) / k1 df [ ' ti me _r e gu la r ' ] = t i m e _ r e g u l a r df = df . drop ( len ( df ) -1 ,0) # supprime l a d e r n i e r e l i g n e car l e c a l c u l e s t impossible dessus def f u n c t i o n _ s o l ( x , L ) : # L = [ y0 , y1 , k0 , k1 , alpha1 ] ou [ y1 , y0 , k1 , k0 , alpha0 ]

  f o r i in range ( len ( df ) ) : def f u n c t i o n ( x ) : r e t u r n f u n c t i o n _ s o l ( x , p a r a m e t e r _ l i s t ( df , i ) ) df . l o c [ i , ' a_mu ' ] = f s o l v e ( function , 0 ) [ 0 ] df . l o c [ i , ' a_lambda ' ] = f s o l v e ( function , 0 . 9 9 ) [ 0 ] df_out = df . l o c [ : , ( ' annee ' , ' y ' , ' k ' , ' a ' , ' a_mu ' , ' a_lambda ' , ' a_mu ' , ' a_lambda ' , ' t i m e _ r e g u l a r ' ) ]df_out . columns = [ ' annee ' , ' y ' , ' k ' , ' a ' , ' a_mu ' , ' a_lambda ' , ' a_mu / ' , ' a_lambda / ' , ' t i m e _ r e g u l a r ' ] f o r i in range ( len ( df_out ) ) :i f df_out . l o c [ i , ' ti me _r e g u l a r ' ] : df_out . l o c [ i , ' a_mu / ' ] = np . nan df_out . l o c [ i , ' a_lambda / ' ] = np . nan e l s e : df_out . l o c [ i , ' a_mu ' ] = np . nan df_out . l o c [ i , ' a_lambda ' ] = np . nan df_out . t o _ c s v ( ' data_out . csv ' , sep = ' ; ' ) f o r i in range ( len ( df ) -1 ) : def f _ 0 ( x ) : r e t u r n df . l o c [ i , ' y ' ] * ( x / df . l o c [ i , ' k ' ] ) * * df . l o c [ i , ' a ' ] def f _ 1 ( x ) : r e t u r n df . l o c [ i +1 , ' y ' ] * ( x / df . l o c [ i +1 , ' k ' ] ) * * df . l o c [ i +1 , ' a ' ]def f_a_mu ( x ) : i f df . l o c [ i , ' ti me _r e g u l a r ' ] : r e t u r n df . l o c [ i , ' y ' ] * ( x / df . l o c [ i , ' k ' ] ) * * df . l o c [ i , ' a_mu ' ] e l s e : r e t u r n df . l o c [ i +1 , ' y ' ] * ( x / df . l o c [ i +1 , ' k ' ] ) * * df . l o c [ i , ' a_mu ' ] def f_a_lambda ( x ) : i f df . l o c [ i , ' ti me _r e g u l a r ' ] : r e t u r n df . l o c [ i , ' y ' ] * ( x / df . l o c [ i , ' k ' ] ) * * df . l o c [ i , ' a_lambda ' ] e l s e : r e t u r n df . l o c [ i +1 , ' y ' ] * ( x / df . l o c [ i +1 , ' k ' ] ) * * df . l o c [ i , ' a_lambda ' ] x = np . l i n s p a c e ( 0 , 4 , 5 0 0 ) y0 = f _ 0 ( x ) y1 = f _ 1 ( x ) ym = f_a_mu ( x ) y l = f_a_lambda ( x ) p l t . f i g u r e ( ) f o r i in range ( len ( df ) ) : def function_sigma ( x ) : r e t u r n f u n c t i o n _ s o l _ s i g m a ( x , p a r a m e t e r _ l i s t ( df , i ) ) # cree l a f o n c t i o n de r e s o l u t i o n de l ' annee i df . l o c [ i , ' a_mu ' ] = f s o l v e ( function_sigma , 0 ) [ 0 ] # cherche l a premiere r a c i n e df . l o c [ i , ' a_lambda ' ] = f s o l v e ( function_sigma , 0 . 9 9 ) [ 0 ] # cherche l a seconde r a c i n e alpha_mu = 1 def f un cti on _k ( x ) :

  df_out . l o c [ i , ' a_mu / ' ] = np . nan df_out . l o c [ i , ' a_lambda / ' ] = np . nan df_out . l o c [ i , ' mu_lin ' ] = df_out . l o c [ i , ' a ' ] -df_out . l o c [ i , ' a_mu ' ] df_out . l o c [ i , ' lambda_lin ' ] = -df_out . l o c [ i , ' a ' ] + df_out . l o c [ i , ' a_lambda ' ] e l s e : df_out . l o c [ i , ' a_mu ' ] = np . nan df_out . l o c [ i , ' a_lambda ' ] = np . nan df_out . l o c [ i , ' mu_lin '] = df_out . l o c [ i , ' a_mu / ' ] -df_out . l o c [ i +1 , ' a ' ] df_out . l o c [ i , ' lambda_lin ' ] = -df_out . l o c [ i , ' a_lambda / ' ] + df_out . l o c [ i +1 , ' a ' ] df_out . t o _ c s v ( ' data_out_BEA_data_comp_employ . csv ' , sep = ' ; ' ) ymin = df [ ' y ' ] . min ( ) ymax = df [ ' y ' ] . max ( ) kmin = df [ ' k ' ] . min ( ) kmax = df [ ' k ' ] . max ( ) f o r i inrange ( len ( df ) -1 ) : def f _ 0 ( x ) : # f o n c t i o n de production annee n r e t u r n df . l o c [ i , ' y ' ] * ( x / df . l o c [ i , ' k ' ] ) * * df . l o c [ i , ' a ' ] def f _ 1 ( x ) : # f o n c t i o n de production annee n+1 r e t u r n df . l o c [ i +1 , ' y ' ] * ( x / df . l o c [ i +1 , ' k ' ] ) * * df . l o c [ i +1 , ' a ' ] def f_a_mu ( x ) : # f o n c t i o n de production mu i f df . l o c [ i , ' ti me _r e g u l a r ' ] : r e t u r n df . l o c [ i , ' y ' ] * ( x / df . l o c [ i , ' k ' ] ) * * df . l o c [ i , ' a_mu ' ] e l s e : r e t u r n df . l o c [ i +1 , ' y ' ] * ( x / df . l o c [ i +1 , ' k ' ] ) * * df . l o c [ i , ' a_mu ' ] def f_a_lambda ( x ) : # f o n c t i o n de production lambda i f df . l o c [ i , ' ti me _r e g u l a r ' ] : r e t u r n df . l o c [ i , ' y ' ] * ( x / df . l o c [ i , ' k ' ] ) * * df . l o c [ i , ' a_lambda ' ] e l s e : r e t u r n df . l o c [ i +1 , ' y ' ] * ( x / df . l o c [ i +1 , ' k ' ] ) * * df . l o c [ i , ' a_lambda ' ] x = np . l i n s p a c e ( 0 , i n t ( 1 . 2 * kmax) + 1 , 5 0 0 )

Table 1 :

 1 The explanatory power of our measures of LSTC and KSTC (λ, µ) compared to the explanatory power of the Solow residual (∆A/A) over the growth rate of real GDP per capita (∆y /y ) in the[START_REF] Solow | Technical Change and the Aggregate Production Function[END_REF] dataset.

		Dependent variable: ∆y /y
	Dataset →	Solow (1957) [N = 40]
	Constant	0.004045 *	0.00303565	0.00139902
		(1.849)	(1.319)	(0.8312)
	∆A/A	0.906542 * * *
		(15.42)
	λ		0.0254126	0.0738151 * * *
			(0.8744)	(3.280)
	µ		0.0696811 * * * 0.0388880 * *
			(3.330)	(2.436)
	∆k /k			0.250630 * * *
				(0.141)
	R 2	0.862	0.862	0.930
	R 2	0.859	0.855	0.924

OLS estimates. t -statistics in parentheses. * p < 0.1, * * p < 0.05, * * * p < 0.01

Table 2

 2 performs the very regressions on the 1948-2015 dataset. Here too λ and µ appear as strong predictors of the growth rate of real GDP per capita.Secondly, we run a few regressions with the variations of the capital share (∆α) as the dependent

variable. Results are displayed in tables 3 and 4, respectively for the

[START_REF] Solow | Technical Change and the Aggregate Production Function[END_REF]

dataset and the 1948-2015 dataset. It comes out that the Solow residual is at best a weak predictor of the variations of the capital share.

Table 2 :

 2 Idem table 1, 1948-2015 dataset.

		Dependent variable: ∆y /y
	Dataset →		1948-2015 [N = 67]
	Constant	0.0104530 * * * 0.00515756 * * * -0.00134955
		(6.996)	(3.086)	(1.284)
	∆A/A	0.650314 * * *
		(7.294)
	λ		-0.134619 * * *	0.0109270
			(5.093)	(0.5876)
	µ		0.164362 * * *	0.0593085 * * *
			(6.879)	(3.817)
	∆k /k			0.415178 * * *
				(12.36)
	R 2	0.450	0.578	0.877
	R 2	0.442	0.565	0.871

OLS estimates. t -statistics in parentheses. * p < 0.1, * * p < 0.05, * * * p < 0.01

Table 3 :

 3

			Dependent variable: ∆α
	Dataset →		Solow (1957) [N = 40]
	Constant	-0.000401293 0.00429165 -0.000419504 0.0035149 -0.000217105
		(0.1097)	(1.3925)	(0.1084)	(1.1457)	(0.0645)
	∆A/A	0.0109813		0.011402
		(0.1116)		(0.1107)
	λ		0.168398 * * *	0.19137 * * *
			(4.3261)		(4.6653)
	µ		-0.127436 * * *	-0.14205 * * *
			(4.5473)		(4.8810)
	∆k /k			0.00153661	0.11895	-0.00105888
				(0.0164)	(0.1317)	(0.0118)
	R 2	0.000	0.359	0.000	0.399	0.000
	R 2	-0.026	0.324	-0.054	0.348	-0.026

The explanatory power of our measures of LSTC and KSTC (λ, µ) compared to the explanatory power the Solow residual (∆A/A) over the variations of the capital share (∆α) in the

[START_REF] Solow | Technical Change and the Aggregate Production Function[END_REF]

dataset. OLS estimates. t -statistics in parentheses. * p < 0.1, * * p < 0.05, * * * p < 0.01

Table 4 :

 4 Idem table 3, 1948Idem table 3, -2015 dataset. dataset.

			Dependent variable: ∆α
	Dataset →			1948-2015 [N = 67]
	Constant	-0.00180884 *	0.000966788 -0.00322667 * * -0.00308333 * * * -0.000275419
		(1.8370)	(0.9394)	(2.5095)	(4.8916)	(0.3111)
	∆A/A	0.147028 * *		0.19446 * * *
		(2.5023)		(3.0177)
	λ		0.0977628 * * *		0.188353 * * *
			(6.0052)		(16.8930)
	µ		-0.0777473 * * *	-0.143134 * * *
			(5.2840)		(15.3625)
	∆k /k			0.0602948 *	0.258413 * * *	0.0129829
				(1.6825)	(12.8336)	(0.3799)
	R 2	0.088	0.389	0.127	0.831	0.002
	R 2	0.074	0.370	0.099	0.823	-0.013

OLS estimates. t -statistics in parentheses. * p < 0.1, * * p < 0.05, * * * p < 0.01

We could have some observations for which neither A2 nor A2 would be valid, but this does not happen in practice.

https://www.bea.gov/iTable/index_nipa.cfm. Y is from "Table1.1.3. Real Gross Domestic Product, Quantity Indexes," line 1 "Gross domestic product"; β is from "Table1.11. Percentage Shares of Gross Domestic Income," line 2 "Compensation of employees, paid."

https://www.bea.gov/iTable/index_FA.cfm. K is from "Table1.2. Chain-Type Quantity Indexes for Net Stock of Fixed Assets and Consumer Durable Goods," line 2 "Fixed assets."

[START_REF] Senouci | The Habakkuk hypothesis in a neoclassical framework[END_REF] https://fred.stlouisfed.org. The variable we use here is "Hours worked by full-time and part-time employees (B4701C0A222NBEA)."

See, for instance, Glachant (2003), Zuleta (2008) and Zuleta and Young (2013).

p l t . p l o t ( x , y0 , ' r -' , l a b e l = ' f0 ' ) p l t . p l o t ( x , y1 , ' b-' , l a b e l = ' f1 ' ) p l t . p l o t ( x , ym, ' y ' , l a b e l = 'f_a_mu ' ) p l t . p l o t ( x , y l , ' g ' , l a b e l = ' f_a_lambda ' ) p l t . legend ( l o c = ' lower r i g h t ' ) p l t . x l a b e l ( ' k ' ) p l t . y l a b e l ( ' y ' ) p l t . t i t l e ( ' annee '+ s t r (1909+ i ) ) p l t . s a v e f i g ( ' annee_zoom { : 0 3 } . png ' . format ( i ) ) p l t . c l o s e ( ) p l t . f i g u r e ( ) p l t . ylim ( 0 , 1 . 5 ) def p a r a m e t e r _ l i s t ( df , n ) : #rend l a l i s t e L bien ordonnee i f df [ ' ti me _r e gu la r ' ] [ n ] :