2016-09-23 39 views
0

當我在「stargazer」中爲「一個變量模型」中的「ci.custom」添加自定義置信區間時,R返回:「if(ncol(ci .custom [[i]])!= 2){:參數長度爲零「。當我這樣做,但有幾個獨立變量時,一切都很完美。自定義置信區間與ci.custom在stargazer中的一個可變模型

(1)ologit模型: m <- polr(Risk_Taking_QNT ~ Wealth_log, data=F, Hess=T)

(2)的置信區間: cim <- exp(confint(m))

我得到:

2.5%97.5%

1.006 1.223

( 3)製作輸出表格:

stargazer(m, ci.custom = list(cim), ci = T, ci.level = 0.95, ci.separator = ";", apply.coef=exp, t.auto=FALSE, p.auto=FALSE, type="text")

ř返回: 「錯誤在如果(NcoI位(ci.custom [[I]])= 2!){:參數是長度爲零的」

======= ================================================== ===============

與2-變量模型的步驟相同:

(1)m <- polr(Risk_Taking_QNT ~ Wealth_log + Experience, data=F, Hess=T)

(2)cim <- exp(confint(m))

我得到:

2.5%97.5%

Wealth_log 0.8768112 1.081713

經驗1.2705479 1.530633

(3)stargazer(m, ci.custom = list(cim), ci = T, ci.level = 0.95, ci.separator = ";", apply.coef=exp, t.auto=FALSE, p.auto=FALSE, type="text")

我得到一個正常的表正確係數間隔。我試過不同的變量,結果總是一樣的:只適用於2+變量。

謝謝大家的幫助!

============================================== ================================================== ================================================== ====

下面是可再現的例子:

library(MASS)

library(stargazer)

數據

Y <- as.factor(c(3, 4, 4, 2, 1, 4, 3, 4, 3, 1))

X1 <- c(8.8, 6.2, 7.3, 7.3, 7.2, 6.4, 7.1, 5.5, 5.7, 7.2)

X2 <- c(7, 8, 9, 8, 8, 10, 9, 9, 7, 6)

模型1個變量在那裏我得到錯誤

m1 <- polr(Y ~ X1, Hess=T)

cim1 <- exp(confint(m1))

stargazer(m1, ci.custom = list(cim1), ci = T, ci.level = 0.95, ci.separator = ";", apply.coef=exp, t.auto=FALSE, p.auto=FALSE, type="text")

有2個變量模型,它工作正常

m2 <- polr(Y ~ X1 + X2, Hess=T)

cim2 <- exp(confint(m2))

stargazer(m2, ci.custom = list(cim2), ci = T, ci.level = 0.95, ci.separator = ";", apply.coef=exp, t.auto=FALSE, p.auto=FALSE, type="text")

+0

你可以寫一個重複的例子?我只是嘗試這樣做在假人模型 'M < - POLR(週六〜INFL,數據=殼體); cim < - exp(confint(m));斯塔蓋澤(米,ci.custom =列表(CIM),CI = T,ci.level = 0.95,ci.separator = 「;」,apply.coef = EXP,t.auto = FALSE,p.auto = FALSE,類型= 「文本」)'。 工作正常,我。 – Chrisss

+0

親愛的克里斯,謝謝你的迴應。我把上面的一個可重複的例子。你的例子確實對我有用,但我的數據仍然存在問題。 –

回答

0

問題是與MASS:::confint.polr,而不是stargazer。這裏的錯誤信息非常具有描述性。

library(MASS); 
library(stargazer); 

Y <- as.factor(c(3, 4, 4, 2, 1, 4, 3, 4, 3, 1)) 
X1 <- c(8.8, 6.2, 7.3, 7.3, 7.2, 6.4, 7.1, 5.5, 5.7, 7.2) 
X2 <- c(7, 8, 9, 8, 8, 10, 9, 9, 7, 6) 

m1 <- polr(Y ~ X1, Hess=T) 
m2 <- polr(Y ~ X1 + X2, Hess=T) 

dim(confint(m1)) 
# NULL 
dim(confint(m2)) 
#[1] 2 2 

與一個協變量的模型,尺寸都沒有在confint.polr設置,但斯塔蓋澤預計2列(你可以看到這是有道理的,因爲這相當於一個置信區間的上限和下限)。

此行爲是在使用該方法confint.lm

m3 <- lm(mpg ~ 1, mtcars) 
m4 <- lm(mpg ~ disp, mtcars) 
dim(confint(m3)) 
#[1] 1 2 
dim(confint(m4)) 
[1] 2 2 
lm對象缺席

當一個polr物體上用1個協變量運行因此,要解決這個問題,可以手動設置上的confint.polr輸出尺寸。

m1 <- polr(Y ~ X1, Hess = TRUE) 
cim1 <- exp(confint(m1)) 
dim(cim1) <- c(1, 2) 
stargazer(m1, ci.custom = list(cim1), ci = T, ci.level = 0.95, ci.separator = ";", apply.coef=exp, t.auto=FALSE, p.auto=FALSE, type="text") 

======================================== 
       Dependent variable:  
      --------------------------- 
          Y    
---------------------------------------- 
X1      0.473   
        (0.104;1.537)  

---------------------------------------- 
Observations    10    
======================================== 
Note:  *p<0.1; **p<0.05; ***p<0.01 

有點痛,但它有效。

此外,僅供參考,此行爲發生在所有MASS方法confintMASS:::confint.polrMASS:::confint.glmMASS:::confint.nls)。

+0

親愛的Chrisss,非常感謝您的解答和詳細的解釋! –

+0

沒問題!如果這解決了您的問題,請接受答案,如果沒有,我們可以繼續處理它。 – Chrisss

+0

謝謝!我已經想出了最終點擊的地方:) –

相關問題