ols

语法

ols(Y, X, [intercept=true], [mode=0])

参数

Y 是因变量;X 是自变量。

Y 是一个向量;X 是一个矩阵、表或元组。当 X 是矩阵时,如果行数等于 Y 的长度,X 的每一列都是一个因子;如果行数不等于 Y 的长度,并且如果列数等于 Y 的长度,X 的每一行都是一个因子。

intercept 是一个布尔变量,表示是否包含回归中的截距。默认值是 true。当它为 true 时,系统自动给 X 添加一列 "1" 以生成截距。

mode 是一个整数,默认值为 0,可取以下 3 个值

  • 0: 输出一个系数估计向量

  • 1: 输出一个具有系数估计,标准差,t 统计量和 p 值的表

  • 2: 输出一个具有ANOVA(方差分析)、RegressionStat(回归统计)、Cofficient(系数) 和 Residual(残差) 的字典,具体含义见下表:

键 ANOVA 对应值:

Source of Variance

自由度(Degree of freedom)

平方和(Sum of Square)

均方差(Mean of square)

F统计量

Significance

Regression(回归)

变量个数(p)

回归平方和(SSR)

回归均方差(MSR=SSR/R)

MSR对MSE的比值

显著性,即统计出的P值

Residual(残差)

残差自由度(n-p-1)

残差平方和(SSE)

残差均方差(MSE=MSE/E)

Total

样本自由度, 不包括常数项(n-1)

总离差平方和(SST)

键 RegressionStat 对应值:

item

统计值

R2

R决定系数,描述回归曲线对真实数据点拟合程度的统计量。范围在 [0,1]之间,越接近1 ,说明对y的解释能力越强,拟合越好。

AdjustedR2

经自由度修正后的决定系数,通过样本数量与模型数量对 R-squared 进行修正。

StdError

回归残差标准误差,残差经自由度修正后的标准差。

Observations

观察样本个数。

键 Coefficient 对应值:

元素

说明

factor

自变量名称

beta

回归系数估计值

stdError

回归系数标准误差。

tstat

T统计值,衡量系数的统计显著性。

键 Residual 对应每一个预测值和实际值之间的残差。

详情

返回对 XY 计算普通最小二乘回归的结果。

例子

$ x1=1 3 5 7 11 16 23
$ x2=2 8 11 34 56 54 100
$ y=0.1 4.2 5.6 8.8 22.1 35.6 77.2;

$ ols(y, x1);
[-9.912821,3.378632]

$ ols(y, (x1,x2));
[-9.494813,2.806426,0.13147]
$ ols(y, (x1,x2), 1, 1);

factor

beta

stdError

tstat

pvalue

intercept

-9.494813

5.233168

-1.814353

0.143818

x1

2.806426

1.830782

1.532911

0.20007

x2

0.13147

0.409081

0.321379

0.764015

$ ols(y, (x1,x2), 1, 2);
Coefficient->
factor    beta      stdError tstat     pvalue
--------- --------- -------- --------- --------
intercept -9.494813 5.233168 -1.814353 0.143818
x1        2.806426  1.830782 1.532911  0.20007
x2        0.13147   0.409081 0.321379  0.764015

Residual->[6.525447,4.223774,-0.383487,-5.820153,-6.638199,-6.907387,9.000005]
RegressionStat->
item         statistics
------------ ----------
R2           0.940241
AdjustedR2   0.910361
StdError     8.173444
Observations 7

ANOVA->
Breakdown  DF SS          MS          F         Significance
---------- -- ----------- ----------- --------- ------------
Regression 2  4204.416396 2102.208198 31.467739 0.003571
Residual   4  267.220747  66.805187
Total      6  4471.637143
$ x=matrix(1 4 8 2 3, 1 4 2 3 8, 1 5 1 1 5);
$ x;

#0

#1

#2

1

1

1

4

4

5

8

2

1

2

3

1

3

8

5

$ ols(1..5, x);
[1.156537,0.105505,0.91055,-0.697821]

$ ols(1..5, x.transpose());
[1.156537,0.105505,0.91055,-0.697821]
// 系统会调整因变量和自变量的维数,以便进行回归