文章目录(Table of Contents)
前言
这是《统计软件教程》(李东风版)第四章的题目解答。
4.1
题目要求
解答
- data SAS4_1;
- input gaodu@@;
- cards;
- 15 3.5 3.5 7 1 7 5.75 27 15 8 4.75 7.5
- 4.25 6.25 5.75 5 8.5 9 6.25 5.5 4 7.5 8.75 6.5
- 4 5.25 3 12 3.75 4.75 6.25 3.25 2.5
- ;
- run;
- proc univariate data=SAS4_1 normal;
- var gaodu;
- run;
在PROC UNIVARIATE 语句中加上NORMAL可以进行正态性检验。
这里给出了四种正态性检验的结果,其中Shapiro-wilk检验是我们首选的,我们可以看到p-值小于0.05,故在0.05的水平下我们拒绝原假设,原数据不符合正态性。
4.2
题目要求
解答
我们首先检查数据是否符合正态分布,再检查数据是否符合对数正态分布。
- data SAS4_2;
- input so2o@@;
- so2olog = log(so2o); /*将取对数后的结果存入so2olog*/
- cards;
- 10 13 12 17 56 36 29 14 10 24 110
- 28 17 8 30 9 47 35 29 14 56 14
- 11 46 11 23 65 26 69 61 94 10 18
- 9 10 28 31 26 29 31 16
- ;
- run;
- proc univariate data=SAS4_2 normal;
- var so2o;
- run;
- proc univariate data=SAS4_2 normal;
- var so2olog; /*检查对数正态分布*/
- run;
这里给出了四种正态性检验的结果,其中Shapiro-wilk检验是我们首选的,我们可以看到p-值小于0.001,故在0.05的水平下我们拒绝原假设,原数据不符合正态性。
这里给出了四种正态性检验的结果,其中Shapiro-wilk检验是我们首选的,我们可以看到p-值大于0.05,故在0.05的水平下我们接受原假设,原数据符合正态性。
4.3
题目要求
解答
当我们有两组样本分别来自两个独立总体,需要检验两个总体的均值或中心位置是否一样。如果两个总体分别服从正态分布,我们可以使用TTest过程,这种检验叫做辆样本t检验。
- data SAS4_3;
- input sex$ weight@@;
- cards;
- b 13.3 b 19 b 20 b 8 b 18 b 22 b 20 b 31 b 21 b 12 b 16 b 12 b 24
- g 22 g 26 g 16 g 12 g 21.7 g 23.2 g 21 g 28 g 30 g 23
- ;
- run;
- proc ttest data=SAS4_3 alpha=0.01; /*alpha=0.01控制检验水平*/
- class sex;
- var weight;
- run;
对于结果我们应该这么看:
- 首先看第三部分结果检验两样本方差是否相等。
- 如果检验的结果是相等的,则可以使用精确的两样本t检验(方法为Pooled)
- 如果方差检验的结果为不等,则只能使用近似的两样本t检验(方法是Satterhwaite)
在这里,我们先看 Equality of Variances 中P-value = 0.7182 >0.05接受原假设,说明两组数据方差不相等的假设失败,也就是说可以承认方差相等,即两组的方差相等。
再看T-Tests中的Pooled method的结果,t-test的p-value = 0.1031,接受原假设,说明两组数据没有差异的假设不可拒绝。
综上所述,男性和女性身体脂肪含量无显著差异。
4.4
题目要求
解答
方法一:使用TTest
- data SAS4_4;
- input num$ score@@;
- cards;
- f 93 f 88 f 89 f 88 f 67 f 89 f 83 f 94 f 89 f 55
- f 88 f 91 f 85 f 70 f 90 f 90 f 94 f 67 f 87 f 83
- s 98 s 74 s 67 s 92 s 83 s 90 s 74 s 97 s 96 s 81
- s 83 s 94 s 89 s 78 s 96 s 93 s 81 s 81 s 93 s 91
- ;
- run;
- proc ttest data=SAS4_4 alpha=0.01; /*alpha=0.01控制检验水平*/
- class num;
- var score;
- run;
在这里,我们先看 Equality of Variances 中P-value = 0.4497 >0.05接受原假设,说明两组数据的方差相等。
再看T-Tests中的Pooled method的结果,t-test的p-value = 0.4167,接受原假设,说明两组数据没有差异的假设不可拒绝。
综上所述,两次考试的难度无显著差异。
方法二:使用UNIVARIATE过程
- data SAS4_4;
- input num$ score1 score2@@;
- cards;
- f 93 98 f 88 74 f 89 67 f 88 92 f 67 83 f 89 90 f 83 74 f 94 97 f 89 96 f 55 81
- f 88 83 f 91 94 f 85 89 f 70 78 f 90 96 f 90 93 f 94 81 f 67 81 f 87 93 f 83 91
- ;
- run;
- data SAS4_4_1;
- set SAS4_4;
- diff = score1-score2;
- keep diff
- run;
- proc univariate data=SAS4_4_1;
- var diff;
- run;
从上面的代码我们可以得到下面的表格:
我们可以看到t检验的p值为0.3116,故我们接受原假设,故两次测试的难度没有明显的差异。
综上所述,我们使用第一种和第二种方法得到的结果是一样的。
4.5
题目要求
解答
- data SAS4_5;
- input num$ score @@;
- cards;
- f 0.2 f 10.4 f 0.3 f 10.9 f 0.4 f 11.3 f 1.1 f 12.4 f 2 f 16.2
- f 2.1 f 17.6 f 3.3 f 18.9 f 3.8 f 20.7 f 4.5 f 24 f 4.8 f 25.4
- f 4.9 f 40 f 5 f 42.2 f 5.3 f 50 f 7.5 f 60 f 9.8
- s 0.2 s 5.4 s 0.3 s 5.7 s 0.4 s 5.8 s 0.7 s 7.5 s 1.2 s 8.7
- s 1.5 s 8.8 s 1.5 s 9.1 s 1.9 s 10.3 s 2 s 15.6 s 2.4 s 16.1
- s 2.5 s 16.5 s 2.8 s 16.7 s 3.6 s 20 s 4.8 s 20.7 s 4.8 s 33
- ;
- run;
- proc univariate data=SAS4_5 normal;
- class num;
- var score;
- run;
- proc npar1way data=SAS4_5 wilcoxon;
- class num;
- var score;
- run;
第一组的正态性检验
第二组的正态性检验
对上面两组数据的正态性检验,得到的p-值都小于0.05,故我们拒绝原假设,应拒绝两组溶菌酶含量分布的正态性假设。
在这种情况下我们可以使用非参数检验。检验两独立样本的中心位置是否相同的非参数检验有Wilcoxon秩和检验。
- /*这段代码上面运行过了,这里拿过来单独讲一下*/
- proc npar1way data=SAS4_5 wilcoxon;
- class num;
- var score;
- run;
上面代码运行的结果如下:
我们只要看Wilcoxon检验中用正态近似得到的p值Prob>|Z|=0.1096,检验结果不显著,可以认为两组溶菌酶无明显差异。
4.6
题目要求
解答
- data SAS4_6;
- input group $ score@@;
- cards;
- a 1.23 a 1.42 a 1.41 a 1.62 a 1.55 a 1.51 a 1.60 a 1.76
- b 1.76 b 1.41 b 1.87 b 1.49 b 1.67 b 1.81
- ;
- run;
- proc univariate data=SAS4_6 normal;
- class group;
- var score;
- run;
- proc npar1way data=SAS4_6 wilcoxon;
- class group;
- var score;
- run;
第一组数据的正态性检验
第二组数据的正态性检验
对上面两组数据的正态性检验,得到的p-值都大于0.05,故我们接受原假设,应接受两组药物含量的分布的正态性假设。于是我们使用t检验并且选择单边检验。
- proc npar1way data=SAS4_6 wilcoxon;
- class group;
- var score;
- run;
正态性检验表示可用,所以用Analyst-Statistics-Hypothesis Tests-Two-Sample t-test for Means 选择单边检验,在 0.10 的水平下不显著p-值为0.098,故拒绝原假设,可以认为B药物含量高于A药物的含量。
4.7
题目要求
解答
- data SAS4_7;
- input norm high@@;
- cards;
- 14.7 12.1 14.0 10.9 12.9 13.1
- 16.2 14.5 10.2 9.6 12.4 11.2
- 12.0 9.8 14.8 13.7 11.8 12.0
- 9.7 9.1
- ;
- run;
- data SAS4_7_1;
- set SAS4_7;
- diff=norm-high;
- keep diff;
- run;
- proc univariate data=SAS4_7_1;
- var diff;
- run;
我们可以看到t检验的p值为0.0061,故我们拒绝原假设,故两种化验方法有明显的差异。
4.8
题目要求
解答
- data SAS4_8;
- input group $ num@@;
- cards;
- a 7 a -4 a 18 a 17 a -3 a -5 a 1 a 10 a 11 a -2
- b -1 b 12 b -1 b -3 b 3 b -5 b 5 b 2 b -11 b -1 b -3
- ;
- run;
- proc univariate data=SAS4_8 normal;
- by group;
- var num;
- run;
- proc npar1way data=SAS4_8 wilcoxon;
- class group;
- var num;
- run;
正态性检验表示可用,所以用Analyst-Statistics-Hypothesis Tests-Two-Sample t-test for Means 选择单边检验,在 0.10 的水平下不显著p-值为0.167,故接受原假设,不能认为补钙药降压作用比安慰剂大。
4.9
题目要求
解答
- data SAS4_9;
- input num1970 num1980@@;
- num19702=num1970*num1970; /*1970年数据的平方*/
- num19703=num1970*num1970*num1970; /*1970年数据的三次方*/
- cards;
- 13.1 27.3 15.3 42.4 25.8 38.7 1.8 4.5 4.9 23 55.4 166.3
- 39.3 109.7 26.7 80.1 47.5 150.7 6.6 20.3 94.7 189.7
- 61.1 131.3 135.6 404.2 47.6 149
- ;
- run;
- proc reg data=SAS4_9;
- var num1970 num1980 num19702 num19703; /*y=ax+b*/
- model num1980=num1970;
- run;
- model num1980=num1970 num19702; /*y=ax+bx^2+c*/
- run;
- model num1980=num1970 num19702 num19703; /*y=ax+bx^2+cx^3+d*/
- run;
注意在程序窗口的标题行显示PROC REG Running表示REG过程还在运行,没有终止。
模型一:y=a*x+b
在这个模型中,我们可以看到R^2达到了0.935,可以看到回归的效果是很好的。
从Analysis of Variance中我们可以看到p-值很小,故我们拒绝原假设,系数不为0.
模型二:y=ax+bx^2+c
相对于上面的模型,这个模型的R^2只提高了一点,且二次项系数不显著,为0.00481。
模型三:y=ax+bx^2+c*x^3+d
在三次模型中,可以看到R^2达到了0.96,虽然高次项系数较小,但在三次模型中二次项与三次项都在0.05水平上显著。
结合上面三个模型,我们认为第三个模型是最好的,于是给出了回归公式:y=5.12 x - 0.06112 x^2 +0.000338 x^3 -15.36。
4.10
题目要求
解答
- data SAS4_10;
- input y x@@;
- x2=x*x;
- cards;
- 40 0.5 41 1.0 43 1.5 42 2.0
- 44 2.5 42 3.0 43 3.5 42 4.0
- ;
- run;
- proc reg data=SAS4_10;
- var y x x2;
- model y=x;
- run;
- model y=x x2;
- run;
模型一:y=a*x+b
可以看到对于一次模型,R^2不高,只有0.289,并且从Analysis of Variance中我们可以看到p-值达到0.1689,接受原假设,系数为0。
模型二:y=ax+bx^2+c
相比于一次模型,二次多项式模型R^2明显变大,且Analysis of Variance的p-值也变小了,再看Parameter Estimates中,一次项系数的p-值为0.0323,则显著。
综上所述,模型二,二次模型是更优的。回归的方程为y=3.44x-0.64x^2+38.48
4.11
题目要求
解答
我们使用两种方法来进行回归,一种是线性回归,第二种是负指数回归。
线性回归
- data SAS4_11;
- input x y@@;
- log_y=log(y);
- cards;
- 1 94.5 1 86.4
- 2 71 2 80.5 2 81.4
- 3 67.4
- 5 49.3
- 6 46.8 6 42.3
- 7 36.6
- ;
- run;
- proc reg data=SAS4_11;
- title "习题4_11_普通回归";
- var x y;
- model y = x; /* selection=stepwise */
- run;
- quit;
从Analysis of Variance中我们可以看到p-值小于0.0001,拒绝原假设,系数不为0。在看R^2,可以看到R^2达到0.96,可以看到回归效果很好。同时Parameter Estimates中系数检验显著不为0。
- data SAS4_11;
- input x y@@;
- log_y=log(y);
- cards;
- 1 94.5 1 86.4
- 2 71 2 80.5 2 81.4
- 3 67.4
- 5 49.3
- 6 46.8 6 42.3
- 7 36.6
- ;
- run;
- proc reg data=SAS4_11;
- title "习题4_11_负指数";
- var x y;
- model y = x; /* selection=stepwise */
- run;
- quit;
从Analysis of Variance中我们可以看到p-值小于0.0001,拒绝原假设,系数不为0。在看R^2,可以看到R^2达到0.978,可以看到回归效果很好。同时Parameter Estimates中系数检验显著不为0。
综合上面两种方法,可以看到使用负指数方法来拟合的R^2更大一些,所以使用负指数拟合的效果更好。
4.12
题目要求
解答
我们首先使用REG的方法:
- data SAS4_12;
- set SASuser.gpa;
- run;
- proc reg data=SAS4_12;
- var gpa hsm hss hse;
- model gpa=hsm hss hse;
- run; /*首先对hsm,hse,hss三个变量进行回归*/
- model gpa=hsm;
- run; /*只对hsm进行回归*/
- model gpa=hsm hss hse / selection=stepwise;
- /*使用逐步回归的方法来确定最优的自变量*/
- run;
上面是完整的代码,下面分布来演示每段代码及其达到的效果。
- proc reg data=SAS4_12;
- var gpa hsm hss hse;
- model gpa=hsm hss hse;
- run;
- /*首先对hsm,hse,hss三个变量进行回归*/
我们首先对hsm,hss,hse三个变量进行回归,可以看到R^2只有0.2,并且hss和hse的系数不显著,故我们进行优化,只对hsm进行回归。
- proc reg data=SAS4_12;
- var gpa hsm hss hse;
- model gpa=hsm hss hse;
- model gpa=hsm;
- run; /*只对hsm进行回归*/
这是优化后的模型,只对hsm进行回归,可以看到系数是显著不为0的,但是R^2只有0.19。接下来我们采用stepwise来逐步回归来确定变量。
- proc reg data=SAS4_12;
- var gpa hsm hss hse;
- model gpa=hsm hss hse / selection=stepwise;
- /*使用逐步回归的方法来确定最优的自变量*/
- run;
从上面的图中我们可以看出一共被选入了两个变量,hsm和hse,并且hsm的系数显著不为0。
最后再把上面的结论总结一下,可以看到hsm的系数为0的检验p-值小于0.001,但是hse的p-值为0.08,说明hse的系数还是可能为0的。
下面使用INSIGHT的方法来做回归,我们就只拟合gpa关于hsm的方程。
首先点击分析--拟合:
然后选择变量即可:
我们来看一下最后做出来的结果,是和上面的结果是一样的。
4.13
题目要求
解答
首先是完整的代码,下面会分步来解释。
- data SAS_4_13;
- set SASuser.fitness;
- run;
- proc reg data=SAS4_13;
- var oxygen age weight runtime rstpulse runpulse maxpulse;
- model oxygen=age weight runtime rstpulse runpulse maxpulse;
- run;/*首先对所有的变量进行回归*/
- model oxygen=age runtime runpulse maxpulse;
- run;/*去掉不显著的变量后重新进行回归*/
- model oxygen=age weight runtime rstpulse runpulse maxpulse /
- selection=stepwise;
- run;/*分布进行回归,选择最优的变量个数*/
下面分步来解释:
- data SAS_4_13;
- set SASuser.fitness;
- run;
- proc reg data=SAS_4_13;
- var oxygen age weight runtime rstpulse runpulse maxpulse;
- model oxygen=age weight runtime rstpulse runpulse maxpulse;
- run;
我们可以看到weight和rstpulse不显著,应接受原假设,系数为0。故我们可以做优化,回归时不加入weight和rtpulse这两个变量。
- data SAS_4_13;
- set SASuser.fitness;
- run;
- proc reg data=SAS_4_13;
- var oxygen age weight runtime rstpulse runpulse maxpulse;
- model oxygen=age runtime runpulse maxpulse;
- run;
可以看到优化后的模型的所有变量都显著了。最后我们使用stepwise来进行变量的选择。
- data SAS_4_13;
- set SASuser.fitness;
- run;
- proc reg data=SAS_4_13;
- model oxygen=age weight runtime rstpulse runpulse maxpulse /
- selection=stepwise;
- run;/*分布进行回归,选择最优的变量个数*/
可以看到使用stepwise得到的结论和之前优化的上一个模型是一样的,都是去掉了变量weight和rstpulse。
4.14
题目要求
解答
首先是整体的代码,下面我们会对这段代码进行分步解释。
- data SAS4_14;
- input point pres@@;
- log_point=log(point); /*对point取对数*/
- log_pres=log(pres); /*对press取对数*/
- point2=point*point; /*对point取二次方*/
- point3=point*point*point; /*对point取三次方*/
- cards;
- 194.5 20.79 194.3 20.79
- 197.9 22.40 198.4 22.67
- 199.4 23.15 199.9 23.35
- 200.9 23.89 201.1 23.99
- 201.4 24.02 201.3 24.01
- 203.6 25.14 204.6 26.57
- 209.5 28.49 208.6 27.76
- 210.7 29.04 211.9 29.88
- 212.2 30.06
- ;
- run;
- proc reg data=SAS4_14;
- var point pres log_point log_pres point2 point3;
- title "press = a*point + b"; /*第一个模型*/
- model pres=point;
- run;
- title "press = a*log(point) + b"; /*第二个模型*/
- model pres=log_point; /*相比模型一,并无优势*/
- run;
- title "log(press) = a*point + b"; /*第三个模型*/
- model log_pres=point;
- run;
- title "log(press) = a*log(point) + b"; /*第四个模型*/
- model log_pres=log_point;
- run;
- title "press = a*point + b*point^2+c"; /*第五个模型*/
- model pres=point point2;/*一二次项不显著*/
- run;
- title "press = a*point + b*point^2+c*point^3+d"; /*第六个模型*/
- model pres=point point2 point3; /*高次项不显著*/
- run;
- quit;
下面来分步解释上面的代码:
模型一:y=a*x+b
- proc reg data=SAS4_14;
- var point pres log_point log_pres point2 point3;
- title "press = a*point + b";
- model pres=point; /*Adj-R-sq很高,在面板数据中,拟合程度相当好*/
- run;
可以看到R^2很高,并且系数显著不为0,于是可以认为拟合程度相当好。
模型二:y=a*log(x)+b
- proc reg data=SAS4_14;
- var point pres log_point log_pres point2 point3;
- model pres=log_point; /*相比模型一,并无优势*/
- run;
我们可以看到,相比与模型一来说,模型二没有优势,R^2没有变大很多。根据简单的原则,模型一好于模型二。
模型三:log(y)=a*x+b
- proc reg data=SAS4_14;
- var point pres log_point log_pres point2 point3;
- model log_pres=point;
- run;
模型三对比模型一也没有优势。
模型四:log(y)=a*log(x)+b
- proc reg data=SAS4_14;
- var point pres log_point log_pres point2 point3;
- model log_pres=log_point;
- run;
模型五:y=ax+bx^2+c
- proc reg data=SAS4_14;
- var point pres log_point log_pres point2 point3;
- model pres=point point2; /*高次项不显著*/
- run;
可以看到二次项系数不显著。
模型六:y=ax+bx^2+c*x^3+d
- proc reg data=SAS4_14;
- var point pres log_point log_pres point2 point3;
- model pres=point point2 point3; /*高次项不显著*/
- run;
可以看到二次和三次项的系数都不显著,综上所述,在其他模型没有优势的情况下,我们可以认为模型一是这些模型里最好的。
4.15
题目要求
解答
- data SAS4_15;
- set SASuser.fitness;
- run;
- proc npar1way data=SAS4_15 wilcoxon;
- title "检验oxygen在不同组之间的差异";
- class group; /*按组来分类*/
- var oxygen; /*检验oxygen在不同组之间是否有差异*/
- run;
我们可以看到结果分为两个部分,我们看第二部分,可以看到p-值为0.8336,大于预定水平0.1,所以说不同组之间没有显著差异。
4.16
题目要求
解答
首先生成数据
- data littlelu.typetime;
- do g=0, 100, 200;
- do t=1 to 10;
- input times @@;
- output;
- drop t;
- end;
- end;
- cards;
- 242 245 244 248 247 248 242 244 246 242
- 248 246 245 247 248 250 247 246 243 244
- 246 248 250 252 248 250 246 248 245 250
- ;
- run;
可以看到上述代码生成的数据在work.SAS4_16,双击可以查看数据。
第一问:使用INSIGHT进行操作
从图中我们可以看出三组有显著的差异
第二问:
- proc anova data=SAS4_16;
- class g;
- model times=g;
- means g / regwq;
- run;
- quit;
我们看结果中的F统计量的p-值,为0.0062,小于0.05,说明模型是显著的,即三组之间有显著的差异。
4.17
题目要求
解答
首先输入数据
- data SAS4_17;
- do temp=1 to 3;
- do pres=1 to 4;
- do r=1 to 2;
- input return @@;
- output;
- end;
- end;
- end;
- cards;
- 52 57 42 45 41 45 48 45
- 50 52 47 45 47 48 53 30
- 63 58 54 59 57 60 58 59
- ;
- run;
可以看到上述代码生成的数据在work.SAS4_17,双击可以查看数据。
- proc anova data=SAS4_17;
- class temp pres;
- model return=temp pres temp*pres;
- run;
- quit;
从p值我们可以看出模型是显著的。为了分析各作用的显著性,我们看后面的详细的方差分析表,他给出了模型中各作用(a , b , a*b)的平方和检验的F统计量和p值。可以看出两个因素的主效应是显著的,交互作用不显著。
所以我们可以重新运行ANOVA过程,不指定交互作用效应。
- proc anova data=SAS4_17;
- class temp pres;
- model return=temp pres;
- means temp pres;
- run;
- quit;
这时因素A的主效应F统计量变为15.7,B的主效应F统计量变为2.55,都增大了。两个因素的主效应仍是高度显著的,说明他们对定强都有显著影响。
为了找到最好的组合,我们在代码后面加上了下面这段话:
- means temp pres;
- run;
我们可以从上图看出,因素a在第三指标下最大,因素b在第一指标下最大,故最好的方案是温度3,压力1。
4.18
题目要求
解答
- data SAS4_18;
- input nation $ gulity $ number;
- cards;
- black yes 17
- black no 149
- white yes 19
- white no 141
- ;
- proc freq data=SAS4_18;
- tables gulity*nation / nopct norow nocol chisq expected;
- weight number;
- run;
列联表中列出了表格单元频数和在零假设下的期望频数,可以看出黑人和白人被判有罪和无罪的人数和期望的差不多。
后面检验的结果只要看卡方那一行,可以看到其p-值为0.637,应该接受原假设,做出结论判决结果与种族是独立的。
4.19
题目要求
解答
- data SAS4_19;
- input sex $ color $ number@@;
- cards;
- m red 32 m blue 14 m blue 4
- f red 25 f blue 17 f blue 8
- ;
- proc freq data=SAS4_19;
- tables sex*color / nopct norow nocol chisq expected;
- weight number;
- run;
列联表中列出了表格单元频数和在零假设下的期望频数,可以看出男性和女性喜欢红绿蓝的人数和期望的差不多。
后面检验的结果只要看卡方那一行,可以看到其p-值为1.5,应该接受原假设,做出结论:颜色偏好与性别无关。
4.20
题目要求
解答
- data SAS4_20;
- input method $ economy $ number@@;
- cards;
- cowmilk poor 30 cowmilk low 15 cowmilk med 11 cowmilk good 12
- humanmilk poor 7 humanmilk low 18 humanmilk med 19 humanmilk good 29
- both poor 5 both low 23 both med 7 both good 19
- ;
- proc freq data=SAS4_20;
- tables method*economy / nopct norow nocol chisq expected;
- weight number;
- run;
列联表中列出了表格单元频数和在零假设下的期望频数,可以看出经济状况是贫穷的使用并用的实际人数小于期望人数,使用牛奶的实际人数大于预测人数,使用母乳的期望人数大于实际人数。
后面检验的结果只要看卡方那一行,可以看到其p-值为小于0.1,应该拒绝原假设,做出结论:喂养方法与母亲经济条件有关。
- 微信公众号
- 关注微信公众号
- QQ群
- 我们的QQ群号
评论