【发布时间】:2018-01-07 18:13:52
【问题描述】:
基本上,我有一个包含 5 个预测变量和一个目标变量的数据集。我需要在 MATLAB 中拟合二阶线性模型。那么我需要创建总共 20 个预测变量然后使用 fitlm 还是有其他方法可以让我不需要创建 20 个变量?
【问题讨论】:
标签: matlab data-analysis
基本上,我有一个包含 5 个预测变量和一个目标变量的数据集。我需要在 MATLAB 中拟合二阶线性模型。那么我需要创建总共 20 个预测变量然后使用 fitlm 还是有其他方法可以让我不需要创建 20 个变量?
【问题讨论】:
标签: matlab data-analysis
根据the documentation,您可以通过将modelspec 参数指定为'quadratic' 来使用fitlm 拟合二阶模型。这是一个带有模拟数据的示例。
% generate some random correlated data
mu = [0 0 0 0 0 0];
sigma = [1.6737 1.0183 1.0279 -1.8104 -2.4717 -2.2875; ...
1.0183 2.9619 -0.2512 -1.9997 2.4059 -1.7610; ...
1.0279 -0.2512 2.7031 -0.2611 -3.9707 -0.6580; ...
-1.8104 -1.9997 -0.2611 5.8947 -2.9645 4.1843; ...
-2.4717 2.4059 -3.9707 -2.9645 15.3447 1.6498; ...
-2.2875 -1.7610 -0.6580 4.1843 1.6498 6.0116];
data_train = mvnrnd(mu,sigma,10000);
data_test = mvnrnd(mu,sigma,1000);
% fit second order polynomial
predictors_train = data_train(:,1:5);
target_train = data_train(:,6);
model = fitlm(predictors_train, target_train, 'quadratic');
% test using data from same distribution
predictors_test = data_test(:,1:5);
target_test = data_test(:,6);
target_est = predict(model, predictors_test);
% report root mean-square error
rmse = sqrt(mean((target_est - target_test).^2))
【讨论】: