gpt4 book ai didi

R-sq 值,一个数据集中多个趋势的线性回归

转载 作者:行者123 更新时间:2023-12-04 05:12:31 24 4
gpt4 key购买 nike

我遇到了一个棘手的问题,试图解决在单个数据集中多次由趋势引起的方差.....

我的数据结构是这样的

x <- read.table(text = "
STA YEAR VALUE
a 1968 457
a 1970 565
a 1972 489
a 1974 500
a 1976 700
a 1978 650
a 1980 659
b 1968 457
b 1970 565
b 1972 350
b 1974 544
b 1976 678
b 1978 650
b 1980 690
c 1968 457
c 1970 565
c 1972 500
c 1974 600
c 1976 678
c 1978 670
c 1980 750 " , header = T)

我正在尝试返回这样的东西
STA  R-sq
a n1
b n2
c n3

其中 n# 是原始集合中位置数据的相应 r 平方值....

我试过了
fit <- lm(VALUE ~ YEAR + STA, data = x) 

为每个单独的站点提供 VALUE 的年度趋势模型,这些年来数据可用于 VALUE,在主数据集中......

任何帮助将不胜感激......我真的很难过这个,我知道这只是对 R 问题的熟悉。

最佳答案

得到 VALUE 的 r 平方~ YEAR每组STA ,你可以拿这个previous answer ,稍微修改它并插入您的值:

# assuming x is your data frame (make sure you don't have Hmisc loaded, it will interfere)
models_x <- dlply(x, "STA", function(df)
summary(lm(VALUE ~ YEAR, data = df)))

# extract the r.squared values
rsqds <- ldply(1:length(models_x), function(x) models_x[[x]]$r.squared)
# give names to rows and col
rownames(rsqds) <- unique(x$STA)
colnames(rsqds) <- "rsq"
# have a look
rsqds
rsq
a 0.6286064
b 0.5450413
c 0.8806604

编辑 :这里遵循 mnel 的建议是将 r 平方值放入漂亮表中的更有效方法(无需添加行和列名称):
# starting with models_x from above
rsqds <- data.frame(rsq =sapply(models_x, '[[', 'r.squared'))

# starting with just the original data in x, this is great:
rsqds <- ddply(x, "STA", summarize, rsq = summary(lm(VALUE ~ YEAR))$r.squared)

STA rsq
1 a 0.6286064
2 b 0.5450413
3 c 0.8806604

关于R-sq 值,一个数据集中多个趋势的线性回归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14716717/

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