r - 'nlme' 中的 lmList() 不接受权重作为参数
问题描述
我不明白为什么lmList()
R 包中的“nlme”不能识别weights
按组估计 WLS 模型的论点。
这是我的示例数据:
obs cusip DLogPrice DQSize error.var
1 2 000361AH8 0.657 -1150000 1.02
2 3 000361AH8 0.268 300000 0.945
3 4 000361AH8 -7.18 -1050000 1.28
4 5 000361AH8 0.500 -1100000 0.947
5 6 000361AH8 -0.509 -847000 0.970
6 7 000361AH8 -0.126 2847000 0.935
7 8 000361AH8 0 0 0.705
8 9 000361AH8 -0.144 -105000 0.825
9 10 000361AH8 0.144 105000 0.828
10 11 000361AH8 -0.144 -200000 0.825
11 12 000361AH8 0.431 570000 0.946
12 13 000361AH8 -0.287 -370000 0.825
13 14 000361AH8 0.882 -600000 0.961
14 15 000361AH8 -0.217 600000 0.925
15 2 000361AK1 -0.155 3000000 1.02
16 3 000361AK1 0.000104 14000 0.945
17 4 000361AK1 -0.182 -2014000 1.28
18 5 000361AK1 0.182 -2500000 0.947
19 6 000361AK1 -1.58 2200000 0.970
20 7 000361AK1 0.132 600000 0.935
21 8 000361AK1 1.12 -1300000 0.705
22 9 000361AK1 0.152 2000000 0.825
23 10 000361AK1 -1.10 200000 0.828
24 11 000361AK1 -0.0658 -2400000 0.825
25 12 000361AK1 0.142 1085000 0.946
26 13 000361AK1 -0.470 -1385000 0.825
27 14 000361AK1 0.228 3000000 0.961
28 15 000361AK1 -0.256 629000 0.925
估计一个简单的lm()
WLS 会产生这些估计
> lm(DLogPrice ~ DQSize , weights = 1/error.var, data=test.data)
Call:
lm(formula = DLogPrice ~ DQSize, data = test.data, weights = 1/error.var)
Coefficients:
(Intercept) DQSize
-1.913e-01 7.096e-09
使用不lmList()
按组运行它也可以:cusip
weights
> lmList(DLogPrice ~ DQSize | cusip, data=test.data)
Call:
Model: DLogPrice ~ DQSize | cusip
Data: test.data
Coefficients:
(Intercept) DQSize
000361AH8 -0.3788868 4.171895e-07
000361AK1 -0.1163497 -7.162274e-08
Degrees of freedom: 28 total; 24 residual
Residual standard error: 1.498528
但是lmList()
按组运行cusip
并且weights
不起作用:
> lmList(DLogPrice ~ DQSize | cusip, weights = 1/error.var, data=test.data)
lmList 中的错误(DLogPrice ~ DQSize | cusip, , weights = 1/error.var, data = test.data):未使用的参数(weights = 1/error.var)
关于我做错了什么有什么想法吗?
解决方案
我相信这只是nlme::lmList()
功能上的疏忽。但是,lme4
( lme4::lmList
) 中的版本确实接受权重。这两个函数几乎兼容(nlme::lmList
返回一个具有稍微复杂的类结构的对象)。
如果由于某种原因您必须使用nlme
,我建议向 R-core 提交错误报告(但我不会屏住呼吸......)
library(lme4)
data(sleepstudy,package="lme4")
set.seed(101)
wts <- runif(nrow(sleepstudy))
lme4::lmList(Reaction~Days|Subject, sleepstudy, weights=wts)
推荐阅读
- php - 在 Magento 2.4 中结合分层导航和按名称搜索
- azure - 使用 CLI 将 Azure Web 应用(容器)连接到 Azure 容器注册表
- reactjs - 我想用 moxios 测试反应 API
- sql - 谷歌 Biq 查询和 SQL
- go - 在 glog 包中设置日志记录级别
- ansible - 使用 Ansible 从模板配置 VM 时无法设置 IP
- python - 矩阵中的不同数据类型
- php - 从 CAS 服务器返回时,SSO CAS 不工作
- text - 为什么 HTML5 画布的“TextMetrics”对象中的“width”和“actualBoundingBoxLeft + actualBoundingBoxRight”有区别?
- typescript - TypeScript 条件类型 - 在所有情况下都返回一种类型