gpt4 book ai didi

r - 尝试使用聚合对列中的值子集运行线性模型

转载 作者:行者123 更新时间:2023-12-04 18:18:32 27 4
gpt4 key购买 nike

我大约有7500个沉降值。每个沉降值(V9)对应一个测站(V2)和一个年份(V3)。我想为每个站设置一条最合适的线(V9〜V3)。

我使用lm创建了一个函数,该函数在手动子集数据时可以使用。但是,当我尝试使用聚合在每个工作站上运行线性模型时,每个工作站都得到相同的值。

这是一些数据的示例:

V2        V3    V9
CRMS0002 2008 -28.4990000
CRMS0002 2009 -28.8080808
CRMS0002 2012 -31.9871795
CRMS0006 2008 -56.8998413
CRMS0006 2013 40.8611111
CRMS0006 2015 32.8555555
CRMS0033 2007 -16.8044444

这是代码:
sub_rate = function(x) {lm(CRMSsub$V9~CRMSsub$V3)}
agg <- aggregate(CRMSsub$V9, by = list(CRMSsub$V2), FUN = sub_rate)

我也尝试过:
agg <- lapply(split(CRMSsub, CRMSsub$V3), FUN = sub_rate)

第一部分和第二部分代码的合计工作。因此,我得到了354个按工位组织的元素,但是每个工位的线性模型结果(分别为截距和斜率)都相同,这意味着它不是按工位执行功能。这是结果的示例:
Group.1         x
CRMS0002 c(`(Intercept)` = -2333.06378840009, `CRMSsub$V3` = 1.1541441797906)
CRMS0006 c(`(Intercept)` = -2333.06378840009, `CRMSsub$V3` = 1.1541441797906)
CRMS0033 c(`(Intercept)` = -2333.06378840009, `CRMSsub$V3` = 1.1541441797906)

最佳答案

您的方法存在的问题是,您在sub_rate的调用中指定了数据集。您还需要在x中将数据集指定为lapply()。例如,您可以执行以下操作:

library(dplyr)

sub_rate <- function(x){lm(x$V9~x$V3)}

lapply(CRMSsub %>% split(.$V2),sub_rate)

关于r - 尝试使用聚合对列中的值子集运行线性模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57872811/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com