精華區beta NCTU-STAT95G 關於我們 聯絡資訊
大家如果將程式中 n_regressors = imsls_d_regressors_for_glm (N_OBSERVATIONS, x, n_class, n_cont, IMSLS_X_CLASS_COLUMNS, class_col, IMSLS_DUMMY,IMSLS_SUM_TO_ZERO, IMSLS_INDICES_EFFECTS, n_effects, n_var_effects, indices_effects, IMSLS_REGRESSORS, &regressors,0); IMSLS_LEAVE_OUT_LAST改成IMSLS_SUM_TO_ZERO 這個兩個指令的意思可以去IMSL PDF檔看 醬就可以避免FULL rank的情形且資料不會流失 所以參數估出來就完全正確了 ※ 引述《mangogogo (mangogo)》之銘言: : 分享回歸這一份作業 : 其中 : #define N_OBSERVATIONS 9 (樣本數) : int n_class = 指的是X Matrix 有幾個column是分類變數 : int n_cont = 指的是X Matrix 有幾個column是連續變數 : 重點是這X Matrix : double x[18] = 這個X Matrix 不是老師講義裡的那個X矩陣 : 這個矩陣主要是顯示資料中有無分類 有幾項連續變數(內建的叫法) : 所以 比如regression model 的X Matrix只需輸入one column的連續變數X_ij : 因為他不必分組(故沒有分類變數) : 1.Y_i = u + bX_i + error (無分類變數,有一個連續變數X_i) : *變數:一個連續變數 注意b為參數不為變數* : 比如 one way anova model 的X Matrix 則只需輸入分類變數 他的model和X_ij無關 : 所以他沒有連續變數 因為題目是分"一"類"三"組 所以這裡的X Matrix為一個column : 你可以是-1,-1,-1,0,0,0,1,1,1 or 1,1,1,2,2,2,3,3,3 都隨意 or : 100,100,100,200,200,200,0,0,0 : 只要表達出有三組且每組三個即可 : 2.Y_ik = u + a_i +error (有分類變數a_i,無連續變數) : *變數:一個分類變數* : 3.Y_ik = u + a_i +bX_ik + error : *變數:一個分類變數,一個連續變數* : int n_effects = 有幾個加號 (最後"+"error 這一個不算) : int n_var_effects[1] = "+"到"+"間有幾個變數 : ex.最後anocova model為{1,1} : int indices_effects[1] = 各變數在 X Matrix 所佔的第幾column : 最後別忘了 在程式最後一行加上 : for(i=0;i<3;i++) printf("coef_%d=%5f\n",i,coef[i]); 算參數估計 : ^看參數有幾個 : (PS 這估出來的數會和原始資料估出來的數有點差異 (就是你用老師個矩陣公式去算) : 所以我今天有問一下老師 學長告訴我... : 是因為這個程式自動會刪去某一組資料,因為醬可以避免一些計算錯誤產生 : 又因老師給的資料太少,使得參數估的會有不少差異) : 哈 我大概分享到這 ^_^ 也差不多要睡了 今天很高興認識大家摟~ 晚安~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.38.247 ※ 編輯: mangogogo 來自: 140.113.38.247 (08/10 13:09)
mangogogo:我剛剛才試出來 不好意思 那麼晚才說@@ 08/10 13:10