全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SPSS论坛
2014-1-24 11:11:42
岭回归,谢谢楼主
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-3-29 10:20:20
感觉说的好简单啊
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-4-19 11:19:58
都是好人啊
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-4-23 16:48:01
怎么得到岭回归后的vif值呢?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-4-29 15:06:20
请教一下楼主:k值该怎么确定?因为k值不同回归出来的系数还是存在较大的差别,您说的在岭迹图上做参考线又是如何做的?等待您的回复。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-4-29 15:06:22
请教一下楼主:k值该怎么确定?因为k值不同回归出来的系数还是存在较大的差别,您说的在岭迹图上做参考线又是如何做的?等待您的回复。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-4-30 16:10:19
岭回归的结果如何解读呢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-4-30 23:30:13
preserve.
set printback=off.
define ridgereg (enter=!charend('/')
                /dep = !charend('/')
                /start=!default(0) !charend('/')
                /stop=!default(1) !charend('/')
                /inc=!default(.05) !charend('/')
                /k=!default(999) !charend('/')
                /debug=!DEFAULT ('N')!charend('/')  ).

preserve.
!IF ( !DEBUG !EQ 'N') !THEN
set printback=off mprint off.                                                   
!ELSE
set printback on mprint on.
!IFEND .
SET mxloops=200.

*---------------------------------------------------------------------------.
* Save original active file to give back after macro is done.
*---------------------------------------------------------------------------.
!IF (!DEBUG !EQ 'N') !THEN
SET RESULTS ON.
DO IF $CASENUM=1.
PRINT / "NOTE: ALL OUTPUT INCLUDING ERROR MESSAGES HAVE BEEN TEMPORARILY"
      / "SUPPRESSED. IF YOU EXPERIENCE UNUSUAL BEHAVIOR, RERUN THIS"
      / "MACRO WITH AN ADDITIONAL ARGUMENT /DEBUG='Y'."  
      / "BEFORE DOING THIS YOU SHOULD RESTORE YOUR DATA FILE."
      / "THIS WILL FACILITATE FURTHER DIAGNOSIS OF ANY PROBLEMS.".
END IF.
!IFEND .

save outfile='rr__tmp1.sav'.

*---------------------------------------------------------------------------.
* Use CORRELATIONS to create the correlation matrix.
*---------------------------------------------------------------------------.

* DEFAULT:  SET RESULTS AND ERRORS OFF TO SUPPRESS CORRELATION PIVOT TABLE *.
!IF (!DEBUG='N') !THEN
set results off errors off.
!IFEND

correlations variables=!dep !enter /missing=listwise/matrix out(*).
set errors on results listing .

*---------------------------------------------------------------------------.
* Enter MATRIX.
*---------------------------------------------------------------------------.

matrix.

*---------------------------------------------------------------------------.
* Initialize k, increment, and  number of iterations. If k was not
* specified, it is 999 and looping will occur. Otherwise, just the one
* value of k will be used for estimation.
*---------------------------------------------------------------------------.

do if (!k=999).
. compute k=!start.
. compute inc=!inc.
. compute iter=trunc((!stop - !start ) / !inc ) + 1.
. do if (iter <= 0).
.   compute iter = 1.
. end if.
else.
. compute k=!k.
. compute inc=0.
. compute iter=1.
end if.

*---------------------------------------------------------------------------.
* Get data from working matrix file.
*---------------------------------------------------------------------------.

get x/file=*/names=varname/variable=!dep !enter.

*---------------------------------------------------------------------------.
* Third row of matrix input is the vector of Ns. Use this to compute number
* of variables.
*---------------------------------------------------------------------------.

compute n=x(3,1).
compute nv=ncol(x)-1.

*---------------------------------------------------------------------------.   
* Get variable names.
*---------------------------------------------------------------------------.

compute varname=varname(2:(nv+1)).

*---------------------------------------------------------------------------.
* Get X'X matrix (or R, matrix of predictor correlations) from input data
* Also get X'Y, or correlations of predictors with dependent variable.
*---------------------------------------------------------------------------.

compute xpx=x(5:(nv+4),2:(nv+1)).
compute xy=t(x(4,2:(nv+1))).

*---------------------------------------------------------------------------.
* Initialize the keep matrix for saving results, and the names vector.
*---------------------------------------------------------------------------.

compute keep=make(iter,nv+2,-999).
compute varnam2={'K','RSQ',varname}.

*---------------------------------------------------------------------------.
* Compute means and standard deviations. Means are in the first row of x and
* standard deviations are in the second row. Now that all of x has been
* appropriately stored, release x to maximize available memory.
*---------------------------------------------------------------------------.

compute xmean=x(1,2:(nv+1)).
compute ybar=x(1,1).
compute std=t(x(2,2:(nv+1))).
compute sy=x(2,1).
release x.

*---------------------------------------------------------------------------.
* Start loop over values of k, computing standardized regression
* coefficients and squared multiple correlations. Store results
*---------------------------------------------------------------------------.

loop l=1 to iter.
. compute b = inv(xpx+(k &* ident(nv,nv)))*xy.
. compute rsq= 2* t(b)*xy - t(b)*xpx*b.
. compute keep(l,1)=k.
. compute keep(l,2)=rsq.
. compute keep(l,3:(nv+2))=t(b).
. compute k=k+inc.
end loop.

*---------------------------------------------------------------------------.
* If we are to print out estimation results, compute needed pieces and
* print out header and ANOVA table.
*---------------------------------------------------------------------------.

do if (!k <> 999).
.!let !rrtitle=!concat('****** Ridge Regression with k = ',!k).
.!let !rrtitle=!quote(!concat(!rrtitle,' ****** ')).
. compute sst=(n-1) * sy **2.
. compute sse=sst * ( 1 - 2* t(b)*xy + t(b)*xpx*b).
. compute ssr = sst - sse.
. compute s=sqrt( sse / (n-nv-1) ).
. print /title=!rrtitle /space=newpage.
. print {sqrt(rsq);rsq;rsq-nv*(1-rsq)/(n-nv-1);s}
/rlabel='Mult R' 'RSquare' 'Adj RSquare' 'SE'
/title=' '.
. compute anova={nv,ssr,ssr/(nv);n-nv-1,sse,sse/(n-nv-1)}.
. compute f=ssr/sse * (n-nv-1)/(nv).
. print anova
   /clabels='df' 'SS','MS'
   /rlabel='Regress' 'Residual'
   /title='         ANOVA table'
   /format=f9.3.
.  compute test=ssr/sse * (n-nv-1)/nv.
.  compute sigf=1 - fcdf(test,nv,n-nv-1).
.  print {test,sigf} /clabels='F value' 'Sig F'/title=' '.

*---------------------------------------------------------------------------.
* Calculate raw coefficients from standardized ones, compute standard errors
* of coefficients, and an intercept term with standard error. Then print
* out similar to REGRESSION output.
*---------------------------------------------------------------------------

. compute beta={b;0}.
. compute b= ( b &/ std ) * sy.
. compute intercpt=ybar-t(b)*t(xmean).
. compute b={b;intercpt}.
. compute xpx=(sse/(sst*(n-nv-1)))*inv(xpx+(k &* ident(nv,nv)))*xpx*
                                 inv(xpx+(k &* ident(nv,nv))).
. compute xpx=(sy*sy)*(mdiag(1 &/ std)*xpx*mdiag(1 &/ std)).
. compute seb=sqrt(diag(xpx)).
. compute seb0=sqrt( (sse)/(n*(n-nv-1)) + xmean*xpx*t(xmean)).
. compute seb={seb;seb0}.
. compute rnms={varname,'Constant'}.
. compute ratio=b &/ seb.
. compute bvec={b,seb,beta,ratio}.
. print bvec/title='--------------Variables in the Equation----------------'
  /rnames=rnms /clabels='B' 'SE(B)' 'Beta' 'B/SE(B)'.
. print /space=newpage.
end if.

*---------------------------------------------------------------------------.
* Save kept results into file. The number of cases in the file will be
* equal to the number of values of k for which results were produced. This
* will be simply 1 if k was specified.
*---------------------------------------------------------------------------.

save keep /outfile='rr__tmp2.sav' /names=varnam2.

*---------------------------------------------------------------------------.
* Finished with MATRIX part of job.
*---------------------------------------------------------------------------.

end matrix.

*---------------------------------------------------------------------------.
* If doing ridge trace, get saved file and produce table and plots.
*---------------------------------------------------------------------------.

!if (!k = 999) !then

get file='rr__tmp2.sav'.
print formats k rsq (f6.5) !enter (f8.6).
report format=list automatic
/vars=k rsq !enter
/title=center 'R-SQUARE AND BETA COEFFICIENTS FOR ESTIMATED VALUES OF K'.

plot
  /format=overlay /title='RIDGE TRACE'
  /horizontal 'K'
  /vertical 'RR Coefficients'
  /plot !enter with k
  /title='R-SQUARE VS. K'
  /horizontal 'K'
  /vertical 'R-Square'
  /plot rsq with k.

!ifend.

*---------------------------------------------------------------------------.
* Get back original data set and restore original settings.
*---------------------------------------------------------------------------.

get file=rr__tmp1.sav.
restore.
!enddefine.
restore.
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-5-29 15:35:40
好贴,有用,谢谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-6-13 11:15:00
运行到选K值的时候,老是显示错误,而且未识别命令
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-10-10 09:27:18
谢谢楼主
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-10-29 11:13:04
谢谢楼主~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-10-29 15:12:55
这个最关键的还是K值的设定啊
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-11-9 20:30:58
doctor1985 发表于 2009-12-4 13:15
回归——》最优尺度——》规则化里面有岭回归的,不用那么麻烦了spss18里面已经比较完善了
手动赞一个!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-12-28 10:46:07
doctor1985 发表于 2009-12-4 13:15
回归——》最优尺度——》规则化里面有岭回归的,不用那么麻烦了spss18里面已经比较完善了
对呀,SPSS功能越来越完善了,有的
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-3-16 11:20:04
麻烦请教下  我做出的结果只有t值,没显示p值,这是什么原因,可否通过查excel的tdist函数查值,但我参考别人的例子试过,查出的sig 与例题不对应
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-5-24 19:08:22
youjihong 发表于 2014-4-23 16:48
怎么得到岭回归后的vif值呢?
同问~疑惑解决了吗。。?可以说一下吗。。?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-5-12 09:33:30
请问,如果是与研究无关的人口统计学变量(作为控制变量导入回归方程中),出现VIF>10,容差接近于0,研究的自变量、因变量、调节变量的共线性诊断值都在正常范围。那么这种情况要怎么处理呢,需要对这些控制变量中心化吗?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-11-2 14:15:18
doctor1985 发表于 2009-12-4 13:15
回归——》最优尺度——》规则化里面有岭回归的,不用那么麻烦了spss18里面已经比较完善了
嗯 。。他们是不一样的吧。。这里的岭回归是岭回归算法在最优尺度回归中的联合应用,而不是单纯的进行岭回归,所以,还得看岭回归是用在哪种情况下的
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-11-2 21:21:41
棒棒哒
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-1-4 14:38:33
isticdan 发表于 2017-11-2 14:15
嗯 。。他们是不一样的吧。。这里的岭回归是岭回归算法在最优尺度回归中的联合应用,而不是单纯的进行岭回 ...
您好,您会用岭回归吗,我想用岭回归筛选影响因素,求指导
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-2-2 17:10:52
doctor1985 发表于 2009-12-4 13:15
回归——》最优尺度——》规则化里面有岭回归的,不用那么麻烦了spss18里面已经比较完善了
我看到规则化里面有领回归,但具体操作还有结果怎么看还是挺懵逼,能指教一下吗
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2019-1-8 15:27:28
详细步骤,代码文件,操作过程讲解(视频+文字)
https://bbs.pinggu.org/thread-6742208-1-1.html
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2021-10-8 12:14:02
doctor1985 发表于 2009-12-4 13:15
回归——》最优尺度——》规则化里面有岭回归的,不用那么麻烦了spss18里面已经比较完善了
怎么解读结果呢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群