Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 最小二乘平均_R_Lsmeans - Fatal编程技术网

R 最小二乘平均

R 最小二乘平均,r,lsmeans,R,Lsmeans,我在理解最小二乘法的行为方面有问题。下面是一个使用随机数据集演示我的问题的玩具示例。这种情况是这样的:1999年至2015年间,在秋季或春季对10个测站进行了密度抽样 # Number of observations in data set n.obs <- 1000 # Create dummy data set df.tst <- data.frame(density = runif(n.obs, 0, 1), year = as.facto

我在理解最小二乘法的行为方面有问题。下面是一个使用随机数据集演示我的问题的玩具示例。这种情况是这样的:1999年至2015年间,在秋季或春季对10个测站进行了密度抽样

# Number of observations in data set
n.obs <- 1000

# Create dummy data set 
df.tst <- data.frame(density = runif(n.obs, 0, 1),
                 year = as.factor(round(runif(n.obs, 1999, 2015))),
                 season = sample(c("Fall", "Spring"), n.obs, replace= TRUE),
                 station = sample(paste("Stat", 1:10), n.obs, replace= TRUE))
这很好。我不明白的是,为什么每个赛季我都这么做,却得到了同样的答案。例如

# Anomaly for fall
seasonal.model %>% 
  filter(season == "Fall") %>% 
  mutate(anom = (lsmean - mean(lsmean))/sd(lsmean))
这些给,

   year season    lsmean         SE  df  lower.CL  upper.CL         anom
1  1999 Spring 0.5966423 0.05242108 973 0.4937709 0.6995137  1.879970679
2  2000 Spring 0.4510249 0.03717688 973 0.3780688 0.5239810 -1.617190892
3  2001 Spring 0.4683691 0.03713725 973 0.3954908 0.5412474 -1.200649943
4  2002 Spring 0.4451014 0.03730148 973 0.3719008 0.5183020 -1.759450098
5  2003 Spring 0.5035975 0.03881258 973 0.4274315 0.5797635 -0.354600778
6  2004 Spring 0.5263538 0.03505567 973 0.4575604 0.5951472  0.191916022
7  2005 Spring 0.5553849 0.03703036 973 0.4827163 0.6280535  0.889129265
8  2006 Spring 0.5182714 0.03626301 973 0.4471087 0.5894341 -0.002191364
9  2007 Spring 0.4765210 0.04097960 973 0.3961024 0.5569395 -1.004874623
10 2008 Spring 0.5465877 0.04483499 973 0.4586033 0.6345721  0.677854169
11 2009 Spring 0.4959347 0.03185768 973 0.4334170 0.5584523 -0.538633207
12 2010 Spring 0.5359122 0.03934735 973 0.4586968 0.6131276  0.421471255
13 2011 Spring 0.5533493 0.03461044 973 0.4854296 0.6212690  0.840241309
14 2012 Spring 0.5465454 0.03697864 973 0.4739783 0.6191124  0.676838641
15 2013 Spring 0.5594985 0.03436268 973 0.4920650 0.6269320  0.987923047
16 2014 Spring 0.5320895 0.03825361 973 0.4570205 0.6071586  0.329666086
17 2015 Spring 0.5009818 0.04771979 973 0.4073363 0.5946274 -0.417419568

我想我误解了一些非常简单的事情,但是为什么春季和秋季的异常在给定的一年中是完全相同的,尽管实际的最小二乘平均值实际上是不同的。如有任何见解,将不胜感激

编辑: 回应贝萨尼普。这是另一次运行,因此可能会有一点不同,因为数据是随机的

Classes ‘summary.ref.grid’ and 'data.frame':    34 obs. of  7 variables:
 $ year    : Factor w/ 17 levels "1999","2000",..: 1 2 3 4 5 6 7 8 9 10 ...
 $ season  : Factor w/ 2 levels "Fall","Spring": 1 1 1 1 1 1 1 1 1 1 ...
 $ lsmean  : num  0.484 0.461 0.441 0.495 0.575 ...
 $ SE      : num  0.046 0.0361 0.0355 0.0408 0.0347 ...
 $ df      : num  973 973 973 973 973 973 973 973 973 973 ...
 $ lower.CL: num  0.394 0.39 0.371 0.415 0.507 ...
 $ upper.CL: num  0.574 0.532 0.511 0.575 0.643 ...
 - attr(*, "estName")= chr "lsmean"
 - attr(*, "clNames")= chr  "lower.CL" "upper.CL"
 - attr(*, "pri.vars")= chr  "year" "season"
 - attr(*, "mesg")= chr  "Results are averaged over the levels of: station" "Confidence level used: 0.95"

试试这个,我认为它可能不是过滤,因为你给了它一个字符串,但季节是一个因素:

seasonal.model %>% 
  filter(season == as.factor("Spring")) %>% 
  mutate(anom = (lsmean - mean(lsmean))/sd(lsmean))
如果是这样,这应该可以工作,您可以设置:
spring=as.factor(“spring”)
然后将
spring
输入管道

请尝试以下操作:
seasonal.model%>%
按(年份、季节)分组%>%

总结(anom=(lsmean-mean(lsmean))/sd(lsmean))

原因是您拟合了一个加性模型,这意味着您假设每个季节的年效应相同。换句话说,每个季节预测之间的关系完全相同


最小二乘法仅基于模型预测——因此模型很重要!如果你将一个模型与交互相匹配,那么你将在每个季节得到不同的异常情况

你能运行str(季节性模型)并在这里显示结果吗?我想我可以帮你找到你需要的地方。@bethanyP我现在已经把这些信息添加到原来的问题中了。谢谢你的回答,bethanyP。当我运行您的代码时,我得到以下错误:filter_impl(.data,dots)中的错误:因子的级别集不同,但当我运行seasonal.model%>%filter(seasonal==“Spring”)时,它确实正确地进行了过滤(即,只给我Spring值)是的,因为fall仍然是一个字符串…这是有意义的第二段代码由于某种原因会产生NaN。因为我忘了将mutate改为summary,所以它仍然会产生NaN。问题似乎与sd()有关。当我去掉它时,它给出了非NaN值,或者如果它本身(即,anom=sd(lsmean))它给出了NaN。@lyngbakr你见过这个答案吗?
   year season    lsmean         SE  df  lower.CL  upper.CL         anom
1  1999   Fall 0.5683228 0.05226823 973 0.4657514 0.6708943  1.879970679
2  2000   Fall 0.4227054 0.03638423 973 0.3513048 0.4941060 -1.617190892
3  2001   Fall 0.4400496 0.03752816 973 0.3664042 0.5136951 -1.200649943
4  2002   Fall 0.4167819 0.03741172 973 0.3433649 0.4901989 -1.759450098
5  2003   Fall 0.4752781 0.04039258 973 0.3960115 0.5545447 -0.354600778
6  2004   Fall 0.4980343 0.03492573 973 0.4294959 0.5665728  0.191916022
7  2005   Fall 0.5270654 0.03591814 973 0.4565795 0.5975514  0.889129265
8  2006   Fall 0.4899519 0.03618696 973 0.4189385 0.5609654 -0.002191364
9  2007   Fall 0.4482015 0.04026627 973 0.3691828 0.5272202 -1.004874623
10 2008   Fall 0.5182682 0.04545050 973 0.4290759 0.6074605  0.677854169
11 2009   Fall 0.4676152 0.03210064 973 0.4046207 0.5306096 -0.538633207
12 2010   Fall 0.5075927 0.03880628 973 0.4314391 0.5837464  0.421471255
13 2011   Fall 0.5250298 0.03440547 973 0.4575123 0.5925473  0.840241309
14 2012   Fall 0.5182259 0.03755452 973 0.4445287 0.5919231  0.676838641
15 2013   Fall 0.5311791 0.03463023 973 0.4632205 0.5991376  0.987923047
16 2014   Fall 0.5037701 0.03826525 973 0.4286782 0.5788620  0.329666086
17 2015   Fall 0.4726624 0.04793952 973 0.3785856 0.5667391 -0.417419568
Classes ‘summary.ref.grid’ and 'data.frame':    34 obs. of  7 variables:
 $ year    : Factor w/ 17 levels "1999","2000",..: 1 2 3 4 5 6 7 8 9 10 ...
 $ season  : Factor w/ 2 levels "Fall","Spring": 1 1 1 1 1 1 1 1 1 1 ...
 $ lsmean  : num  0.484 0.461 0.441 0.495 0.575 ...
 $ SE      : num  0.046 0.0361 0.0355 0.0408 0.0347 ...
 $ df      : num  973 973 973 973 973 973 973 973 973 973 ...
 $ lower.CL: num  0.394 0.39 0.371 0.415 0.507 ...
 $ upper.CL: num  0.574 0.532 0.511 0.575 0.643 ...
 - attr(*, "estName")= chr "lsmean"
 - attr(*, "clNames")= chr  "lower.CL" "upper.CL"
 - attr(*, "pri.vars")= chr  "year" "season"
 - attr(*, "mesg")= chr  "Results are averaged over the levels of: station" "Confidence level used: 0.95"
seasonal.model %>% 
  filter(season == as.factor("Spring")) %>% 
  mutate(anom = (lsmean - mean(lsmean))/sd(lsmean))