原文链接:http://tecdat.cn/?p=21641
工资模型
在劳动经济学领域 , 收入和工资的研究为从性别歧视到高等教育等问题提供了见解 。 在本文中 , 我们将分析横断面工资数据 , 以期在实践中使用贝叶斯方法 , 如BIC和贝叶斯模型来构建工资的预测模型 。
加载包
在本实验中 , 我们将使用dplyr包探索数据 , 并使用ggplot2包进行数据可视化 。 我们也可以在其中一个练习中使用MASS包来实现逐步线性回归 。
我们将在实验室稍后使用此软件包中使用BAS.LM来实现贝叶斯模型 。
数据
本实验室将使用的数据是在全国935名受访者中随机抽取的 。
变量描述wage周收入hours每周平均工作时间IQ智商得分kww工作知识分数educ受教育年限exper工作经验tenure在现任雇主工作多年age年龄married= 1 , 如果已婚black= 1(如果为黑人)south= 1 , 如果住在南部urban= 1 , 如果居住在都市中sibs兄弟姐妹数brthord出生顺序meduc母亲的教育程度feduc父亲的学历lwage工资的自然对数
这是观察研究还是实验?
- 观察研究
与任何新数据集一样 , 标准的探索性数据分析是一个好的开始 。 我们将从工资变量开始 , 因为它是我们模型中的因变量 。
- 关于工资问题 , 下列哪种说法是错误的?
- 7名受访者每周收入低于300元
- ## Min. 1st Qu. Median Mean 3rd Qu. Max.
- ## 115.0 669.0 905.0 957.9 1160.0 3078.0

文章图片

文章图片
由于工资是我们的因变量 , 我们想探讨其他变量之间的关系作为预测 。
练习:排除工资和工龄 , 选择另外两个你认为可以很好预测工资的变量 。 使用适当的图来形象化他们与工资的关系 。
受教育程度和工作小时数似乎是工人工资的良好预测因素 。
- ggplot(data = https://www.sohu.com/a/wage, aes(y=wage, x=exper))+geom_point()

文章图片
ggplot(data = https://www.sohu.com/a/wage, aes(y=wage, x=educ))+geom_point()

文章图片
简单的线性回归
对于我们在数据中看到的工资差异 , 一个可能的解释是 , 更聪明的人赚更多的钱 。 下图显示了周工资和智商得分之间的散点图 。
- ggplot(data = https://www.sohu.com/a/wage, aes(x = iq, y = wage)) +
- geom_point()

文章图片
这个图是相当杂乱的 。 虽然智商分数和工资之间可能存在轻微的正线性关系 , 但智商充其量只是一个粗略的工资预测指标 。 我们可以通过拟合一个简单的线性回归来量化这一点 。
【变量|拓端tecdat|R语言贝叶斯线性回归和多元线性回归构建工资预测模型】m_wage_iq$coefficients
- ## (Intercept) iq
- ## 116.991565 8.303064
回想一下 , 在模型下

文章图片
如果使用 和参考先验, 然后贝叶斯后验均值和标准差分别等于频数估计和标准差 。

文章图片

文章图片
贝叶斯模型规范假设误差正态分布且方差为常数 。 与频率法一样 , 我们通过检查模型的残差分布来检验这一假设 。 如果残差是高度非正态或偏态的 , 则违反了假设 , 任何随后的推断都是无效的 。
- 检验m_wage_iq的残差 。 正态分布误差的假设有效吗?
- 不 , 因为模型的残差分布是右偏的 。
- qqnorm(m_wage_iq$residuals)
- qqline(m_wage_iq$residuals)

文章图片

文章图片
练习:重新调整模型 , 这次使用educ(教育)作为自变量 。 你对上一个练习的回答有变化吗?
- ## (Intercept) educ
- ## 146.95244 60.21428
## [1] 382.3203

文章图片

文章图片
同样的结论是 , 该线性模型的残差与?i~N(0 , σ2)近似正态分布 , 因此可以在该线性模型的基础上进行进一步的推断 。
变量转换
适应数据右偏的一种方法是(自然)对数变换因变量 。 请注意 , 这仅在变量严格为正时才可能 , 因为没有定义负值的对数 , 并且log(0)=?∞ 。 我们试着用对数工资作为因变量来拟合一个线性模型 。 问题4将基于这个对数转换模型 。
m_lwage_iq = lm(lwage ~ iq, data = https://www.sohu.com/a/wage)
练习:检查该模型的残差 。 假设正态分布的残差合理吗?

文章图片

文章图片
基于上述残差图 , 可以假定对数工资线性模型与iq的正态分布 。
回想一下 , 给定σ2的α和β的后验分布是正态的 , 但略微遵循一个具有n?p?1自由度的t分布 。 在这种情况下 , p=1 , 因为智商是我们模型中唯一的对数工资预测因子 。 因此 , α和β的后验概率都遵循933自由度的t分布 , 因为df非常大 , 这些分布实际上是近似正态的 。
- 在参考先验p(α , β , σ2)∞1/σ2下 , 给出β的95%后验置信区间 , 即IQ系数 。
- (0.00709, 0.01050)
- # 从线性模型m_lwage_iq中提取系数值
- qnorm(c(0.025, 0.975), mean = iq_mean_estimate, sd=iq_sd)
练习:智商系数很小 , 这是意料之中的 , 因为智商分数提高一分很难对工资产生很高的倍增效应 。 使系数更易于解释的一种方法是在将智商放入模型之前将其标准化 。 从这个新模型来看 , 智商提高1个标准差(15分)估计工资会增加多少百分比?
智商是用scale函数标准化的 , 智商提高15分会引起工资的提高
- coef(summary(m_lwage_scaled_iq))["siq", "Estimate"]*15+coef(summary(m_lwage_scaled_iq))["(Intercept)", "Estimate"]
多元线性回归 很明显 , 工资可以用很多预测因素来解释 , 比如经验、教育程度和智商 。 我们可以在回归模型中包含所有相关的协变量 , 试图尽可能多地解释工资变化 。
lm中的.的使用告诉R在模型中包含所有协变量 , 然后用-wage进一步修改 , 然后从模型中排除工资变量 。
默认情况下 , lm函数执行完整的案例分析 , 因此它会删除一个或多个预测变量中缺少(NA)值的观察值 。
由于这些缺失的值 , 我们必须做一个额外的假设 , 以便我们的推论是有效的 。 换句话说 , 我们的数据必须是随机缺失的 。 例如 , 如果所有第一个出生的孩子没有报告他们的出生顺序 , 数据就不会随机丢失 。 在没有任何额外信息的情况下 , 我们将假设这是合理的 , 并使用663个完整的观测值(与原来的935个相反)来拟合模型 。 Bayesian和frequentist方法都存在于处理缺失数据的数据集上 , 但是它们超出了本课程的范围 。
- 从这个模型来看 , 谁赚得更多:已婚的黑人还是单身的非黑人?
- 已婚黑人
- married_black <- married_coef*1+black_coef*1
- married_black
从线性模型的快速总结中可以看出 , 自变量的许多系数在统计上并不显著 。 您可以根据调整后的R2选择变量 。 本文引入了贝叶斯信息准则(BIC) , 这是一种可用于模型选择的度量 。 BIC基于模型拟合 , 同时根据样本大小按比例惩罚参数个数 。 我们可以使用以下命令计算全线性模型的BIC:
BIC(m_lwage_full)
## [1] 586.3732
我们可以比较完整模型和简化模型的BIC 。 让我们试着从模型中删除出生顺序 。 为了确保观测值保持不变 , 可以将数据集指定为na.omit(wage) , 它只包含没有缺失值的观测值 。
m_lwage_nobrthord = lm(lwage ~ . -wage -brthord, data = https://www.sohu.com/a/na.omit(wage))
## [1] 582.4815
如您所见 , 从回归中删除出生顺序会减少BIC , 我们试图通过选择模型来最小化BIC 。
- 从完整模型中消除哪个变量得到最低的BIC?
- feduc
- BIC(m_lwage_sibs)
BIC(m_lwage_feduc)
## [1] 580.9743
BIC(m_lwage_meduc)
## [1] 582.3722
练习:R有一个函数stepAIC , 它将在模型空间中向后运行 , 删除变量直到BIC不再降低 。 它以一个完整的模型和一个惩罚参数k作为输入 。 根据BIC(在这种情况下k=log(n)k=log(n))找到最佳模型 。
- #对于AIC , 惩罚因子是一个接触值k 。 对于step BIC , 我们将使用stepAIC函数并将k设置为log(n)
- step(m_lwage_full1, direction = "backward", k=log(n))
- ## Residuals:
- ## Min 1Q Median 3Q Max
- ## -172.57 -63.43 -35.43 23.39 1065.78
- ##
- ## Coefficients:
- ## Estimate Std. Error t value Pr(>|t|)
- ## (Intercept) -5546.2382 84.7839 -65.416 < 2e-16 ***
- ## hours 1.9072 0.6548 2.913 0.0037 **
- ## tenure -4.1285 0.9372 -4.405 1.23e-05 ***
- ## lwage 951.0113 11.5041 82.667 < 2e-16 ***
- ## ---
- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
- ##
- ## Residual standard error: 120.1 on 659 degrees of freedom
- ## Multiple R-squared: 0.9131, Adjusted R-squared: 0.9127
- ## F-statistic: 2307 on 3 and 659 DF, p-value: < 2.2e-16
通常 , 几个模型都是同样可信的 , 只选择一个模型忽略了选择模型中包含的变量所涉及的固有不确定性 。 解决这一问题的一种方法是实现贝叶斯模型平均(Bayesian model averaging , BMA) , 即对多个模型进行平均 , 从新数据中获得系数的后验值和预测值 。 我们可以使用它来实现BMA或选择模型 。 我们首先将BMA应用于工资数据 。
- bma(lwage ~ . -wage, data = https://www.sohu.com/a/wage_no_na,
- prior = "BIC",
- modelprior = uniform())
- ##
- ## Marginal Posterior Inclusion Probabilities:
- ## Intercept hours iq kww educ exper
- ## 1.00000 0.85540 0.89732 0.34790 0.99887 0.70999
- ## tenure age married1 black1 south1 urban1
- ## 0.70389 0.52468 0.99894 0.34636 0.32029 1.00000
- ## sibs brthord meduc feduc
- ## 0.04152 0.12241 0.57339 0.23274
- ## P(B != 0 | Y) model 1 model 2 model 3
- ## Intercept 1.00000000 1.0000 1.0000000 1.0000000
- ## hours 0.85540453 1.0000 1.0000000 1.0000000
- ## iq 0.89732383 1.0000 1.0000000 1.0000000
- ## kww 0.34789688 0.0000 0.0000000 0.0000000
- ## educ 0.99887165 1.0000 1.0000000 1.0000000
- ## exper 0.70999255 0.0000 1.0000000 1.0000000
- ## tenure 0.70388781 1.0000 1.0000000 1.0000000
- ## age 0.52467710 1.0000 1.0000000 0.0000000
- ## married1 0.99894488 1.0000 1.0000000 1.0000000
- ## black1 0.34636467 0.0000 0.0000000 0.0000000
- ## south1 0.32028825 0.0000 0.0000000 0.0000000
- ## urban1 0.99999983 1.0000 1.0000000 1.0000000
- ## sibs 0.04152242 0.0000 0.0000000 0.0000000
- ## brthord 0.12241286 0.0000 0.0000000 0.0000000
- ## meduc 0.57339302 1.0000 1.0000000 1.0000000
- ## feduc 0.23274084 0.0000 0.0000000 0.0000000
- ## BF NA 1.0000 0.5219483 0.5182769
- ## PostProbs NA 0.0455 0.0237000 0.0236000
- ## R2 NA 0.2710 0.2767000 0.2696000
- ## dim NA 9.0000 10.0000000 9.0000000
- ## logmarg NA -1490.0530 -1490.7032349 -1490.7102938
- ## model 4 model 5
- ## Intercept 1.0000000 1.0000000
- ## hours 1.0000000 1.0000000
- ## iq 1.0000000 1.0000000
- ## kww 1.0000000 0.0000000
- ## educ 1.0000000 1.0000000
- ## exper 1.0000000 0.0000000
- ## tenure 1.0000000 1.0000000
- ## age 0.0000000 1.0000000
- ## married1 1.0000000 1.0000000
- ## black1 0.0000000 1.0000000
- ## south1 0.0000000 0.0000000
- ## urban1 1.0000000 1.0000000
- ## sibs 0.0000000 0.0000000
- ## brthord 0.0000000 0.0000000
- ## meduc 1.0000000 1.0000000
- ## feduc 0.0000000 0.0000000
- ## BF 0.4414346 0.4126565
- ## PostProbs 0.0201000 0.0188000
- ## R2 0.2763000 0.2762000
- ## dim 10.0000000 10.0000000
- ## logmarg -1490.8707736 -1490.9381880
在模型平均法下 , 还可以可视化系数的后验分布 。 我们将智商系数的后验分布绘制如下 。
- plot(coef_lwage, subset = c(3,13), ask=FALSE)

文章图片
我们还可以为这些系数提供95%的置信区间:
- ## 2.5% 97.5% beta
- ## Intercept 6.787648e+00 6.841901e+00 6.8142970694
- ## hours -9.213871e-03 0.000000e+00 -0.0053079979
- ## iq 0.000000e+00 6.259498e-03 0.0037983313
- ## kww 0.000000e+00 8.290187e-03 0.0019605787
- ## educ 2.247901e-02 6.512858e-02 0.0440707549
- ## exper 0.000000e+00 2.100097e-02 0.0100264057
- ## tenure 0.000000e+00 1.288251e-02 0.0059357058
- ## age 0.000000e+00 2.541561e-02 0.0089659753
- ## married1 1.173088e-01 3.015797e-01 0.2092940731
- ## black1 -1.900452e-01 0.000000e+00 -0.0441863361
- ## south1 -1.021332e-01 1.296992e-05 -0.0221757978
- ## urban1 1.374767e-01 2.621311e-01 0.1981221313
- ## sibs 0.000000e+00 0.000000e+00 0.0000218455
- ## brthord -2.072393e-02 0.000000e+00 -0.0019470674
- ## meduc 0.000000e+00 2.279918e-02 0.0086717156
- ## feduc -7.996880e-06 1.558576e-02 0.0025125930
- ## attr(,"Probability")
- ## [1] 0.95
- ## attr(,"class")
- ## [1] "confint.bas"
wage_red = wage %>% dplyr::select(-sibs, -brthord, -meduc, -feduc)
- 基于这个简化的数据集 , 根据贝叶斯模型平均 , 下列哪一个变量的边际后验包含概率最低?
- 年龄
- ##
- ## Call:
- ##
- ##
- ## Marginal Posterior Inclusion Probabilities:
- ## Intercept hours iq kww educ exper
- ## 1.0000 0.8692 0.9172 0.3217 1.0000 0.9335
- ## tenure age married1 black1 south1 urban1
- ## 0.9980 0.1786 0.9999 0.9761 0.8149 1.0000
- ## P(B != 0 | Y) model 1 model 2 model 3
- ## Intercept 1.0000000 1.0000 1.0000000 1.0000000
- ## hours 0.8691891 1.0000 1.0000000 1.0000000
- ## iq 0.9171607 1.0000 1.0000000 1.0000000
- ## kww 0.3216992 0.0000 1.0000000 0.0000000
- ## educ 1.0000000 1.0000 1.0000000 1.0000000
- ## exper 0.9334844 1.0000 1.0000000 1.0000000
- ## tenure 0.9980015 1.0000 1.0000000 1.0000000
- ## age 0.1786252 0.0000 0.0000000 0.0000000
- ## married1 0.9999368 1.0000 1.0000000 1.0000000
- ## black1 0.9761347 1.0000 1.0000000 1.0000000
- ## south1 0.8148861 1.0000 1.0000000 0.0000000
- ## urban1 1.0000000 1.0000 1.0000000 1.0000000
- ## BF NA 1.0000 0.5089209 0.2629789
- ## PostProbs NA 0.3311 0.1685000 0.0871000
- ## R2 NA 0.2708 0.2751000 0.2634000
- ## dim NA 10.0000 11.0000000 9.0000000
- ## logmarg NA -2275.4209 -2276.0963811 -2276.7565998
- ## model 4 model 5
- ## Intercept 1.0000000 1.0000000
- ## hours 1.0000000 0.0000000
- ## iq 1.0000000 1.0000000
- ## kww 0.0000000 0.0000000
- ## educ 1.0000000 1.0000000
- ## exper 1.0000000 1.0000000
- ## tenure 1.0000000 1.0000000
- ## age 1.0000000 0.0000000
- ## married1 1.0000000 1.0000000
- ## black1 1.0000000 1.0000000
- ## south1 1.0000000 1.0000000
- ## urban1 1.0000000 1.0000000
- ## BF 0.2032217 0.1823138
- ## PostProbs 0.0673000 0.0604000
- ## R2 0.2737000 0.2628000
- ## dim 11.0000000 9.0000000
- ## logmarg -2277.0143763 -2277.1229445
- 判断:包含所有变量的朴素模型的后验概率大于0.5 。 (系数使用Zellner-Siow零先验 , 模型使用β二项(1,1)先验)
- 真的
- ##
- ## Call:
- ##
- ##
- ## Marginal Posterior Inclusion Probabilities:
- ## Intercept hours iq kww educ exper
- ## 1.0000 0.9792 0.9505 0.6671 0.9998 0.8951
- ## tenure age married1 black1 south1 urban1
- ## 0.9040 0.7093 0.9998 0.7160 0.6904 1.0000
- ## sibs brthord meduc feduc
- ## 0.3939 0.5329 0.7575 0.5360
- ## P(B != 0 | Y) model 1 model 2 model 3 model 4
- ## Intercept 1.0000000 1.00000000 1.00000000 1.00000000 1.0000
- ## hours 0.9791805 1.00000000 1.00000000 1.00000000 1.0000
- ## iq 0.9504649 1.00000000 1.00000000 1.00000000 1.0000
- ## kww 0.6670580 1.00000000 1.00000000 1.00000000 1.0000
- ## educ 0.9998424 1.00000000 1.00000000 1.00000000 1.0000
- ## exper 0.8950911 1.00000000 1.00000000 1.00000000 1.0000
- ## tenure 0.9040156 1.00000000 1.00000000 1.00000000 1.0000
- ## age 0.7092839 1.00000000 1.00000000 1.00000000 1.0000
- ## married1 0.9997881 1.00000000 1.00000000 1.00000000 1.0000
- ## black1 0.7160065 1.00000000 1.00000000 1.00000000 1.0000
- ## south1 0.6903763 1.00000000 1.00000000 1.00000000 1.0000
- ## urban1 1.0000000 1.00000000 1.00000000 1.00000000 1.0000
- ## sibs 0.3938833 1.00000000 1.00000000 0.00000000 0.0000
- ## brthord 0.5329258 1.00000000 1.00000000 1.00000000 0.0000
- ## meduc 0.7575462 1.00000000 1.00000000 1.00000000 1.0000
- ## feduc 0.5359832 1.00000000 0.00000000 1.00000000 0.0000
- ## BF NA 0.01282537 0.06040366 0.04899546 1.0000
- ## PostProbs NA 0.07380000 0.02320000 0.01880000 0.0126
- ## R2 NA 0.29250000 0.29140000 0.29090000 0.2882
- ## dim NA 16.00000000 15.00000000 15.00000000 13.0000
- ## logmarg NA 76.00726935 77.55689364 77.34757164 80.3636
- ## model 5
- ## Intercept 1.000000
- ## hours 1.000000
- ## iq 1.000000
- ## kww 1.000000
- ## educ 1.000000
- ## exper 1.000000
- ## tenure 1.000000
- ## age 1.000000
- ## married1 1.000000
- ## black1 1.000000
- ## south1 1.000000
- ## urban1 1.000000
- ## sibs 0.000000
- ## brthord 1.000000
- ## meduc 1.000000
- ## feduc 0.000000
- ## BF 0.227823
- ## PostProbs 0.012500
- ## R2 0.289600
- ## dim 14.000000
- ## logmarg 78.884413
- plot(coef_bma_wage_red, ask = FALSE)

文章图片
预测
贝叶斯统计的一个主要优点是预测和预测的概率解释 。 大部分贝叶斯预测都是使用模拟技术来完成的 。 这通常应用于回归建模中 , 尽管我们将通过一个仅包含截距项的示例来进行分析 。
假设你观察到y的四个数值观测值 , 分别为2、2、0和0 , 样本均值y′=1 , 样本方差s2=4/3 。 假设y~N(μ , σ2) , 在参考先验p(μ , σ2)~1/σ2下 , 我们的后验概率变为

文章图片
以样本均值为中心

文章图片
其中a=(n-1)/2和b=s2(n-1)/2=2 。
为了得到y5的预测分布 , 我们可以先从σ2的后验点模拟 , 然后再从μ模拟y5 。 我们对y5年的预测结果将来自一项新的观测结果的后验预测分布 。 下面的示例从y5的后验预测分布中提取100,000次 。
- set.seed(314)
- N = 100000
- y_5 = rnorm(N, mu, sqrt(sigma2))

文章图片
新观测的95%中心置信区间为在这种情况下 , L是0.025分位数 , U是0.975分位数 。 我们可以使用分位数函数来获得这些值 , 从而找到tracy5的0.025和0.975的样本分位数 。
- 估计一个新的观测y595%置信区间
- (-3.11, 5.13)
- quantile(y_5, probs = c(0.025, 0.975))
- ## 2.5% 97.5%
- ## -3.109585 5.132511
- plot(den_of_y)

文章图片
BAS预测
在BAS中 , 用贝叶斯模型平均法构造预测区间是通过仿真实现的 , 而在模型选择的情况下 , 用预测区间进行精确推理往往是可行的 。
回到工资数据集 , 让我们找到最佳预测模型下的预测值 , 即预测值最接近BMA和相应的后验标准差的模型 。
predict(bma_lwage, estimator="BPM")
- ## [1] "Intercept" "hours" "iq" "kww" "educ"
- ## [6] "exper" "tenure" "age" "married1" "urban1"
- ## [11] "meduc"
predict(bma_lwage, estimator="MPM")
- ## [1] "Intercept" "hours" "iq" "educ" "exper"
- ## [6] "tenure" "age" "married1" "urban1" "meduc"
练习:使用简化数据 , 最佳预测模型、中位概率模型和最高后验概率模型中包含哪些协变量?
让我们来看看BPM模型中哪些特征会影响最高工资 。
- ## [,1]
- ## wage "1586"
- ## hours "40"
- ## iq "127"
- ## kww "48"
- ## educ "16"
- ## exper "16"
- ## tenure "12"
- ## age "37"
- ## married "1"
- ## black "0"
- ## south "0"
- ## urban "1"
- ## sibs "4"
- ## brthord "4"
- ## meduc "16"
- ## feduc "16"
- ## lwage "7.36897"
- ## 2.5% 97.5% pred
- ## 6.661869 8.056452 7.359160
- ## 2.5% 97.5% pred
- ## 782.0108 3154.0780 1570.5169
如果使用BMA , 区间是
- ## 2.5% 97.5% pred
- ## 733.3446 2989.2076 1494.9899
参考文献
Wooldridge, Jeffrey. 2000. Introductory Econometrics- A Modern Approach. South-Western College Publishing.

文章图片
最受欢迎的见解
1.matlab使用贝叶斯优化的深度学习
2.matlab贝叶斯隐马尔可夫hmm模型实现
3.R语言Gibbs抽样的贝叶斯简单线性回归仿真
4.R语言中的block Gibbs吉布斯采样贝叶斯多元线性回归
5.R语言中的Stan概率编程MCMC采样的贝叶斯模型
6.Python用PyMC3实现贝叶斯线性回归模型
7.R语言使用贝叶斯 层次模型进行空间数据分析
8.R语言随机搜索变量选择SSVS估计贝叶斯向量自回归(BVAR)模型
9.matlab贝叶斯隐马尔可夫hmm模型实现
推荐阅读
- 榜单|求解亿级规模约束条件和变量,权威榜单斩获第一,华为云发布首个商用AI求解器
- 汽车|新赛道上,主流车企们的“慢变量”,如今开始厚积薄发
- 服贸|服贸观止|国美控股集团CEO杜鹃:数字化是推动零售业转型升级关键变量和能量
- 硬件|为什么说RISC-V是40年来人类计算路线的最大变量?
- 高温|高温多变量烧结复杂生产体系 节能减排、减碳关键技术研究与示范
- 硬件|中国厂商收购英国最大晶圆厂再增变量 最高持股可能不超过25%
- 生活|至临资本陈粲然:科技+人群,双重变量引爆科技消费品
- 广告|拓端tecdat|移动广告中基于点击率的数据策略
- XTrain|拓端tecdat|matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类
- 分析|拓端tecdat|R语言文本挖掘NASA数据网络分析,tf-idf和主题建模