NCTU-STAT94G 板


LINE

內建的好像有點問題,改寫如下 (目前我寫的是沒看到問題,有興趣可以試試看) 後面有testing data pin=0.06 pout=0.05 keep=[] intercept=true 會選入 x4 x1 x2 -x4 。 即,最後剩下 x1 x2 在STATS.inmodel中 row 代表第幾步,column代表第幾個變數,0:沒有選到 1:選到 % 沒有內設的參數,所以,每一個arguments都要填滿。 % % STATS=stepwf(X,Y,pin,pout,keep,intercpt) % % Algorithm % 1. k=1,加入最小RSS的變數 (至少有一個變數比 null model好) % 2. k=k+1 % 3. 在(p-k+1)個變數中,找有最小的RSS的變數 % 4. 若其RSS的p-value<pin 加入。 % 否則,goto 8 % 5. 只要檢查前面k-1個選入的變數 (注意keep住的變數不可在其中) % 找刪除後有最小partial F 的變數 % % 6. 若刪除該變數後,其p-value>pout 則刪除該變數 % 7. 回到 2 % 8. STOP % % Arguments % X:predictors % Y:response % pin:entering probability % pout: removing probability % keep: keep some predictors ALWAYS in model ('column numbers' or []) % intercept: add intercept term or not (true or false) % % Return Values : % STATS.inmodel=inmodel; % STATS.SSE; % STATS.dfE; % STATS.SSR; % STATS.dfR; % STATS.sst; % STATS.pf (partial F statistic) % function STATS=stepwf(X,Y,pin,pout,keep,intercept) [nrow ncol]=size(X); % first step k=1; sse=10^10; SSE=zeros(ncol,1); dfE=zeros(ncol,1); SSR=zeros(ncol,1); dfR=zeros(ncol,1); pf=zeros(ncol,1); index=setdiff(1:ncol,keep); %candidate variables idx0=zeros(ncol,1); if ~isempty(keep) idx0(keep,1)=1; end for i=index idx1=sort([find(idx0==1);i]); if(intercept) x=[ones(nrow,1),X(:,idx1)]; else x=X(:,idx1); end beta=inv(x'*x)*x'*Y; yhat=x*beta; e=Y-yhat; r=yhat-mean(Y); ssr1=r'*r; sse1=e'*e; dfr=k; dfe=nrow-k-intercept; PF=ssr1/sse1/dfr*dfe; pval=1-fcdf(PF,dfr,dfe); % pval小表示和null model 有差異所以要選非null model if sse1<sse sse=sse1; idx=idx1; end end inmodel=zeros(1,ncol); inmodel(idx)=1; SSE(1)=sse; dfR(1)=k+(~isempty(keep))*length(keep); dfE(1)=nrow-intercept-dfR(1); SSR(1)=ssr1; pf(1)=PF; sse0=sse; t=Y-mean(Y); sst=t'*t; % setpwise %先加一個再看看可不可以丟一個 pval0=0; index=setdiff(1:ncol,keep); while pval0<pin [k ncol]=size(inmodel); k=k+1; sse0=SSE(k-1); sse=10^10; in0=sign(sum(inmodel,1)); for i=find(in0==0) in=in0; in(i)=1; if(intercept) x=[ones(nrow,1),X(:,in==1)]; else x=X(:,in==1); end beta=inv(x'*x)*x'*Y; yhat=x*beta; e=Y-yhat; %residual sse1=e'*e; r=yhat-mean(Y); %regression ssr1=r'*r; if sse1<sse flag=i; sse=sse1; ssr=ssr1; end end dfr=sum(in); dfe=nrow-dfr-intercept; PF=(sse0-sse)/sse*dfe; pval=1-fcdf(PF,1,dfe); pval0=pval; %若沒有增加變數,表示上一步就是最終結果,若有增加變數就要看前面有沒有可以 丟。 if pval<pin inmodel=[inmodel;zeros(1,ncol)]; inmodel(k,flag)=1; if ~isempty(keep) inmodel(k,keep)=1; end SSE(k)=sse;dfE(k)=dfe;SSR(k)=ssr;dfR(k)=dfr;pf(k)=PF; sse0=sse; sse=0; % % remove variable clear flag; out0=sign(sum(inmodel,1)); size(out0) PF=10^10; dfr=sum(out0)-1; dfe=nrow-dfr-intercept; indd=find(sign(sum(inmodel(1:(k-1),:),1))==1);% %把keep的位置移掉 if ~isempty(keep) indd(indd==keep)=[]; end for i=indd i out=zeros(1,ncol); out(i)=1 out=out0-out if(intercept) x=[ones(nrow,1),X(:,out==1)]; %intercept=true else x=X(:,out==1); %intercept=false end beta=inv(x'*x)*x'*Y; yhat=x*beta; e=Y-yhat; sse1=e'*e; r=yhat-mean(Y); ssr1=r'*r; PF1=(sse1-sse0)/sse0*(dfe-1); if PF1<PF %挑一個最不顯著改善殘值的變數,看是否可刪除該變數 flag=i; sse=sse1; ssr=ssr1; PF=PF1; end end % disp('dfe');dfe; pval=1-fcdf(PF,1,dfe-1); %pval小表示二個model有差異,故不可刪除該變數 if pval>pout [a b]=find(inmodel==1); inmodel=[inmodel;zeros(1,ncol)]; k=k+1; disp('k=');k inmodel(k,flag)=-1; SSE(k)=sse;dfE(k)=dfe;SSR(k)=ssr;dfR(k)=dfr;pf(k)=PF; end else k=k-1; break; end end inmod=sign(cumsum(STATS.inmodel,1)); STATS.inmodel=inmod; STATS.SSE=SSE(1:k); STATS.dfE=dfE(1:k); STATS.SSR=SSR(1:k); STATS.dfR=dfR(1:k); STATS.pf=pf(1:k); STATS.sst=sst; --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.204.50 ※ 編輯: shyfang 來自: 140.114.204.50 (02/25 21:49) ※ 編輯: shyfang 來自: 140.114.36.148 (03/04 11:03) ※ 編輯: shyfang 來自: 140.114.36.148 (04/12 13:52)







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Gossiping站內搜尋

TOP