我想对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估算却不会收到任何错误消息?