reg2latex

版本 1.0.1 (175.0 KB) 作者: MR
Create regression output for latex
105.0 次下载
更新时间 2022/9/24

View reg2latex on File Exchange

reg2latex

Description

The function reg2latex creates a .tex file from a linear model in Matlab. The function allows for multiple model inputs and to format your own regression output. If you use other methods to estimate regressions in Matlab (e.g.: Econometrics Toolbox, then you can parse a struct into reg2latex and obtain a regression output. Standard errors are reported in brackets.

Set-up

Clone the repository and add it to your Matlab path. Make sure to add the folder helper to your path.

The file main_regression_file.m contains the three examples from the README.md file and produces the corresponding .tex files. The file main_text.text just loads the tables files via \input.

Table of content

- Example 1
- Example 2
- Example 3
- Required packages in Latex

Example 1

Run fitlm and obtain to obtain a linear regression.

% Load default sample data from mathworks
load carsmall
X = [Weight,Horsepower,Acceleration];
% Fit a linear regression model using fitlm.
mdl = fitlm(X,MPG);

% Function takes a linear Model as input and outputs a seperate .tex file
tabPosition = 'H';
tabCaption = 'My table names goes here'; 
tabLabel = 'tab:myLabel';
tabNote = 'This a long note explaining what I did in each model.';

% Call reg2latex and createx tex output for a single regression output
modelName = '& Baseline Model 1';
reg2latex({mdl},'filename','myTable1.tex', 'tabPosition',tabPosition, 'tabCaption',tabCaption, 'tabLabel',tabLabel, 'modelName', modelName, 'tabNote',tabNote);

The obtained screenshot from the output in Latex is

tab1

Note that I added a bit of vertical spacing the displayed table here with \renewcommand{\arraystretch}{1.5}

Example 2

Adding more regression models into one output table. Suppose you run multiple models and want to store the results column wise.

mdl1 = fitlm([Weight,Horsepower],MPG);
mdl2 = fitlm(Weight,MPG);

% Call reg2latex and createx tex output if I would have used two models
modelName = '& \textbf{Baseline Model} 1 & Another model 2';
tabCaption = 'Please make my first model bold'; 
reg2latex({mdl, mdl1},'myTable2.tex', tabPosition, tabCaption, tabLabel, modelName, tabNote);

% Call reg2latex and create tex output for all the models
modelName = '& Baseline Model 1 & Another model 2 & Another fancy model 3';
reg2latex({mdl2, mdl, mdl1},'filename','myTable3.tex', 'tabPosition',tabPosition, 'tabCaption',tabCaption, 'tabLabel',tabLabel, 'modelName', modelName, 'tabNote',tabNote);

tab2 tab3

Example 3

Suppose you have results from a custom regression output in a struct. Make sure that the fields are named as in the mdl object. Here as an example consider using the ols function from the Econometrics Toolbox

olsStruct = ols(Acceleration, [Weight]);
pValue = 2 * min(tcdf(olsStruct.tstat, olsStruct.nobs-1), 1-tcdf(olsStruct.tstat, olsStruct.nobs-1));
% Note that the structure of your input has to follow this format
myTable = table(olsStruct.beta, olsStruct.bstd, olsStruct.tstat, pValue,...
                'VariableNames', {'Estimate', 'SE', 'tStat', 'pValue'}, 'RowNames', {'weight'});
myMdl = struct;
myMdl.CoefficientNames = myTable.Properties.RowNames';
myMdl.Coefficients = myTable;
myMdl.NumCoefficients = olsStruct.nvar;

% Add fields to be added after coefficients in the same convention als in mdl
addInfo.addFieldName = {'N', 'Rsquared', 'FirmFE'}; 

addInfo.model1.(addInfo.addFieldName{1}) = olsStruct.nobs;
addInfo.model1.(addInfo.addFieldName{2}) = olsStruct.rsqr;
addInfo.model1.(addInfo.addFieldName{3}) = 'Yes';

addInfo.model2.(addInfo.addFieldName{1}) = mdl.NumObservations;
addInfo.model2.(addInfo.addFieldName{2}) = mdl.Rsquared.Ordinary;
addInfo.model2.(addInfo.addFieldName{3}) = 'No';

modelName = '& Baseline Model 1 & Test';
reg2latex({mdl, myMdl},'filename','myCustomTable.tex', 'tabPosition', tabPosition, 'tabCaption', tabCaption, 'tabLabel',tabLabel, 'modelName', modelName, 'tabNote',tabNote);

tab4

Required packages in Latex

Place the following packages in your preamble

\usepackage{booktabs}
\usepackage{multirow}
\usepackage{float} % Need if position of table needs float
\usepackage[flushleft]{threeparttable}

引用格式

MR (2024). reg2latex (https://github.com/mreinke1/reg2latex/releases/tag/v1.0.1), GitHub. 检索来源 .

MATLAB 版本兼容性
创建方式 R2022b
兼容任何版本
平台兼容性
Windows macOS Linux
标签 添加标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
版本 已发布 发行说明
1.0.1

See release notes for this release on GitHub: https://github.com/mreinke1/reg2latex/releases/tag/v1.0.1

1.0.0

要查看或报告此来自 GitHub 的附加功能中的问题,请访问其 GitHub 仓库
要查看或报告此来自 GitHub 的附加功能中的问题,请访问其 GitHub 仓库