如何使用样本选择包解决两步heckit估计中的奇异性问题?

时间:2019-04-15 10:26:34

标签: r package selection singular

我想对sampleselection包进行两步heckit估算。目标是估计对数(工资)。不工作的人的工资编码为0。 我在结果方程式中存在3个变量的问题。没有这些变量,估算就可以了。如果我仅将这些变量之一添加到结果方程式中,则会收到错误消息:

solve.default(crossprod(xMat))中的错误:   Lapack例行程序dgesv:系统完全是单数:U [10,10] = 0

变量是Branche,öffentlicherDienst和Unternehmengroesse。所有这些都是分类的,并且只有工作人员才能观察到。对于不工作的人,变量使用、、 BrancheNotObservable等进行编码。

如果我用3变量手动进行heckit估计,则效果很好,而且我没有收到错误。我估计了一个概率模型来计算逆铣削比,并进行了ols估计,其中逆铣削比是一个附加变量。

这是3个变量的编码方式:

 table(trainSet2015$Unternehmengroesse)


  [-2] trifft nicht zu           [1] Unter  5           [2] 5 bis 10 
                  2773                    203                    388 
   [3] 11 bis unter 20   [6] 20 bis unter 100  [7] 100 bis unter 200 
                   448                   1000                    525 
[9] 200 bis unter 2000     [10] 2000 und mehr 
                  1326                   1757 
table(trainSet2015$öffenticherDienst)

      [1] Ja     [2] Nein keine Angabe 
        1656         3991         2773 
table(trainSet2015$Branche)

                                    Andere Industrien 
                                                  214 
                            Banken und Versicherungen 
                                                  283 
                                  Bergbau und Energie 
                                                  218 
                    Chemische Industrie, Holz, Papier 
                                                  301 
                                Groß-und Einzelhandel 
                                                  509 
                                        keine Branche 
                                                 2773 
                                             Kleidung 
                                                   23 
                            Land- und Forstwirtschaft 
                                                  181 
      Maschinenbau (darunter auch Automobilindustrie) 
                                                  478 
             private und öffentliche Dienstleistungen 
                                                 2519 
Ton, Steine, Erden, Bau,Eisen, Stahl, Schwerindustrie 
                                                  610 
                     Zug, Post, Kommunikation,Verkehr 
                                                  311`

这是heckit功能代码

heckit(Partizipation ~  Alter + Familienstand + Geschlecht + 
                   Migrationshintergrund + ArbeitsmarkterfahrungVollzeit +
                   I((ArbeitsmarkterfahrungVollzeit^2)/100) +
                   ArbeitsmarkterfahrungTeilzeit +  Bundesland
                 + I((ArbeitsmarkterfahrungTeilzeit^2)/100) 
                 + Bildungsgrad  + AnzahlKinder0Bis4 +
                   AnzahlKinder5Bis7 +
                   I((BehinderungsgradInProzent^2)/100) +
                   AnzahlKinder8Bis15 + AnzahlKinder16Bis18
                 + BehinderungsgradInProzent +
                   OtherIncome
                   ,log(Stundenlohn) ~ Bundesland + ArbeitsmarkterfahrungVollzeit +
                    I((ArbeitsmarkterfahrungTeilzeit^2)/100)+ ArbeitsmarkterfahrungTeilzeit +
                    I((ArbeitsmarkterfahrungVollzeit^2)/100) + DauerUnternehmenszugehörigkeit +
                    I((DauerUnternehmenszugehörigkeit^2)/100) + öffenticherDienst , trainSet2015)

所有3个变量中的2737人是不工作的人,所以我不知道那里的工资。

我的问题是为什么当我从sampleslection包中使用heckit函数时会收到错误消息,而如果我手动进行heckit估算却不会收到任何错误消息?

0 个答案:

没有答案