2016-02-04 29 views
2

我已經擬合了一個lmer模型,現在我試圖用真實係數而不是縮放係數來解釋係數。非規模預測器係數lmer模型與非規模響應擬合

我的頂級型號是:

lmer(logcptplus1~scale.t6+scale.logdepth+(1|location) + (1|Fyear),data=cpt, REML=TRUE) 

所以無論是預測變量進行縮放,其中1爲比例值記錄。我的響應變量沒有縮放,只是記錄。

要縮放我的預測變量,我在r中使用了scale(data $ column,center = TRUE,scale = TRUE)函數。

我的模型輸出結果是: 固定效應:

   Estimate Std. Error t value 
    (int)   3.31363 0.15163 21.853 
scale.t6  -0.34400 0.10540 -3.264 
scale.logdepth -0.58199 0.06486 -8.973 

所以我怎麼能獲得基於我的縮放預測變量按比例縮放從這些係數我響應變量真正的估計?

注:我知道如何unscale我的預測變量,只是沒怎麼unscale /變換系數

感謝

回答

2

scale功能做了數據的z變換,這意味着它需要的原始值,減去平均值,然後除以標準偏差。

to_scale <- 1:10 
using_scale <- scale(to_scale, center = TRUE, scale = TRUE) 
by_hand <- (to_scale - mean(to_scale))/sd(to_scale) 
identical(as.numeric(using_scale), by_hand) 
[1] TRUE 

因此,扭轉模型係數所有你需要做的是通過協變量的標準差乘以係數,並添加平均值。比例函數適用於您的平均值和sd。因此,如果我們假設您的協變量值爲scale.t6迴歸係數的using_scale向量,我們可以編寫一個函數來爲我們完成這項工作。

get_real <- function(coef, scaled_covariate){ 

      # collect mean and standard deviation from scaled covariate 
      mean_sd <- unlist(attributes(scaled_covariate)[-1]) 

      # reverse the z-transformation 
      answer <- (coef * mean_sd[2]) + mean_sd[1] 

      # this value will have a name, remove it 
      names(answer) <- NULL 

      # return unscaled coef 
       return(answer) 
} 

get_real(-0.3440, using_scale) 
[1] 4.458488 

換句話說,這與縮放預測變量是一回事,因爲它是單調變換。

+0

謝謝,但是這是怎麼翻譯的攔截以及?截距也可以縮放到兩個變量,對嗎?你知道如何改變它嗎?我對lmers和混合模型一般都不熟悉,而且我正在努力從整個模型中獲取實際參數估計值 – user4093066

+0

正確,截距取決於模型中的兩個變量,並且無法轉換它。如果想要得到真實的參數估計值,我建議不要從開始就縮放參數。縮放的主要原因(除了潛在的計算上的幫助),您可以對參數估計進行比較。真正的問題是爲什麼你實際上需要真正的參數估計。只需繪製每個參數的預測值並將x軸替換爲實際值即可。 –