问题描述
我已经在Stata中编写了以下代码,希望在R中进行复制。
{'DailyRate': {0: '903'},'distanceFromHome': {0: '2'},'EnvironmentSatisfaction': {0: '1'},'HourlyRate': {0: '41'},'JobInvolvement': {0: '4'},'JobLevel': {0: '3'},'JobSatisfaction': {0: '3'},'MonthlyIncome': {0: '7880'},'MonthlyRate': {0: '2560'},'NumCompaniesWorked': {0: '0'},'PercentSalaryHike': {0: '18'},'RelationshipSatisfaction': {0: '4'},'StandardHours': {0: '80'},'TotalWorkingYears': {0: '9'},'TrainingTimesLastYear': {0: '3'},'YearsAtCompany': {0: '8'},'YearsInCurrentRole': {0: '7'},'YeaRSSinceLastPromotion': {0: '0'},'YearsWithCurrManager': {0: '7'},'MaritalStatus_': {0: '2'},'Jobrole_': {0: '7'},'Gender_': {0: '1'},'EducationField_': {0: '1'},'Department_': {0: '2'},'BusinessTravel_': {0: '2'},'OverTime_': {0: '1'},'Over18_': {0: '1'},'Age': '39'}
有关如何做到的任何见解?我是R的新手。
数据-样本:
heckman wage i.age i.profstat i.edlevel,select(i.profstat i.edlevel ur i.ethnicity mstatus) twostep first mills(imr)
predict simwage,xb
replace wage = simwage if missing(wage) & !missing(profstat)
解决方法
类似的东西。我们需要评估模型并执行插补过程。 在选择方程式中,您必须使用适当的I()或新变量
您的其他问题 How do I correct this Error in Heckman selectionmodel when implementing in R?
因此,尽管您的工资为0或其他,您可能没有NA的工资
然后使用eq像这样:I(wage != 0)
讨论后编辑:
require(sampleSelection)
#Hecman model
heckman <- selection(selection = I(!is.na(wage)) ~ ur + mstatus,outcome = wage ~ profstat,data = data,method = "2step")
#prediction
simwage <- predict(heckman,data)
data$wage_p <- simwage
# imputation - replace NA wage with a new assesment
data$wage_org <- data$wage
data$wage[is.na(data$wage) & !is.na(data$profstat)] <- simwage[is.na(data$wage) & !is.na(data$profstat)]
head(data)
# A tibble: 6 x 10
ethnicity age ur edlevel mstatus profstat income wage wage_p wage_org
<dbl> <fct> <dbl> <dbl> <dbl> <fct> <dbl> <dbl> <dbl> <dbl>
1 6 1 1 2 1 4 10 1794 767. 1794
2 1 1 1 2 3 4 NA 767. 767. NA
3 2 2 1 3 3 2 9 1483 305. 1483
4 1 2 1 1 3 NA NA NA NA NA
5 7 3 1 2 2 1 10 1529 792. 1529
6 2 1 1 2 1 NA NA NA NA NA