如何解决在函数内将权重传递给 lm 和其他人
我有如下数据:
library(estimatr)
DF <- structure(list(country = c("C","C","J","B","F","F"),year = c(2005,2010,2005,2005),sales= c(15.48,12.39,3.72,23.61,4,31.87,25.33,7.64,0.26,2.9),industry = c("D","D","E","D"),urbanisation = c("B","A","C"),size = c(1,1,5,1),wt = c(14L,14L,19L,30L,20L,20L),taxrate = c(12L,12L,21L,18L,vote = c(0,votewon = c(0,1)),row.names = c(NA,10L),class = "data.frame")
我正在函数内调用 lm
和 lm_robust
。该示例应该是我正在使用的函数的简化版本,其中以某种方式 lm
将 weights=weights
作为参数,而 lm_robust
在执行相同操作时失败。现在,当我尝试重新创建错误时,它们都失败了..
我应该如何将 weights
参数传递给这个函数?
lm_coll <- function (data=data,weights=weights) {
a <- lm(sales~size+taxrate+industry,weights=weights,data=data)
summary(a)
b <- lm_robust(sales~size+taxrate+industry,data=data)
summary(b)
}
lm_coll(DF,weights=wt)
解决方法
据我所知,您希望将权重列名称作为字符串传递,而不是使用 $
引用它(根据我上面的评论)。实现此目的的简单方法是:
lm_coll <- function (data,weight) {
weights = data[,weight]
a <- lm(sales~size+taxrate+industry,weights=weights,data=data)
print(summary(a))
b <- lm_robust(sales~size+taxrate+industry,data=data)
print(summary(b))
}
lm_coll(data=DF,weight='wt')
您的版本失败的原因是 R 试图从本地环境中的 wt
中找到一个名为 lm_coll
的对象。显然这不存在,因为环境只包含 DF
和一个名为 wt
的列。我的函数版本在环境中创建了一个名为 weights
的新对象。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。