【发布时间】:2015-05-24 15:45:21
【问题描述】:
所以我尝试构建自动分组。目标是选择具有最低方差的分组设置。
也就是说,我想为下面的 x 和 y 找,x,y 是自然数,
GROUP 1: 1997 - x
GROUP 2: x+1 - y
GROUP 3: y+1 - 1994
使得 (variance(Responsein Group1),variance(Response in Group2),variance(Response in Group3)) 的总和最小化。
data maindat;
input Year Response ;
datalines;
1994 -4.300511714
1994 -9.646920963
1994 -15.86956805
1993 -16.14857235
1993 -13.05797186
1993 -13.80941206
1992 -3.521394503
1992 -1.102526302
1992 -0.137573583
1992 2.669238665
1992 -9.540489193
1992 -19.27474303
1992 -3.527077011
1991 1.676464068
1991 -2.238822314
1991 4.663079037
1991 -5.346920963
1990 -8.543723186
1990 0.507460641
1990 0.995302284
1990 0.464194011
1989 4.728791571
1989 5.578685423
1988 2.771297564
1988 7.109159247
1987 15.96059456
1987 2.985292226
1986 -4.301136971
1985 5.854674875
1985 5.797294021
1984 4.393329025
1983 -6.622580905
1982 0.268500302
1977 12.23062252
;
run;
我的想法是我会有 2 个循环(嵌套)
1st do loop (1st iteration): Group 1 1977 - 1977 1977 - 1977 1977 - 1977 … 1977 - 1977
2nd do loop: Group 2 1978 - 1978 1978 - 1979 1978 - 1980 … 1978 - 1993
Else: Group 3 1979 - 1994 1980 - 1994 1981 - 1994 … 1994 - 1994
1st do loop (2nd iteration): Group 1 1977 - 1978 1977 - 1978 1977 - 1978 … 1977 - 1978
2nd do loop: Group 2 1979 - 1979 1979 - 1980 1979 - 1981 … 1979 - 1993
Else Group 3 1980 - 1994 1981 - 1994 1982 - 1994 … 1994 - 1994
...
1st do loop (n-1th iteration) Group 1 1977 - 1991 1977 - 1991
2nd do loop: Group 2 1992 - 1992 1992 - 1993
Else Group 3 1993 - 1994 1994 - 1994
1st do loop (nth iteration) Group 1 1977 - 1992
2nd do loop: Group 2 1993 - 1993
Else Group 3 1994 - 1994
然后我将只选择提供 3 个组的方差(组内响应)之和中最小的分组设置。
【问题讨论】:
-
看看PROC CLUSTER和PROC TREE
-
我试过它没有得到我想要的东西。我也试过proc fastclus。 “stackoverflow.com/questions/29174948/…” - 这就是我要找的。span>
-
我会很好奇 PROC CLUSTER 与 HEIGHT = 您的响应变量是否可以工作(唯一的 VAR 是年份变量)。但是我对PROC CLUSTER真的不是很了解;不幸的是,我的机器学习课程在 Matlab 中。
-
另一个可能的选择可能是创建一个piecewise linear model。本质上,您要做的是将最佳分段截距模型拟合到您的数据;想象三条水平线作为你的小组的意思。您也许可以使用
proc nlin拟合这样的模型。
标签: sas cluster-analysis datastep