小编ded*_*ede的帖子

如何在R中使用Box-Cox功率变换

我需要将一些数据转换为"正常形状",并且我读到Box-Cox可以识别用于转换数据的指数.

对于我的理解

car::boxCoxVariable(y)
Run Code Online (Sandbox Code Playgroud)

用于线性模型中的响应变量,和

MASS::boxcox(object)
Run Code Online (Sandbox Code Playgroud)

对于公式或拟合的模型对象.因此,因为我的数据是数据帧的变量,所以我发现我可以使用的唯一函数是:

car::powerTransform(dataframe$variable, family="bcPower")
Run Code Online (Sandbox Code Playgroud)

那是对的吗?或者我错过了什么?

第二个问题是关于我获得之后要做什么

Estimated transformation parameters
dataframe$variable
0.6394806
Run Code Online (Sandbox Code Playgroud)

我应该简单地将变量乘以这个值吗?我这样做了:

aaa = 0.6394806
dataframe$variable2 = (dataframe$variable)*aaa
Run Code Online (Sandbox Code Playgroud)

然后我运行shapiro-wilks测试的正常性,但我的数据似乎不遵循正态分布:

shapiro.test(dataframe$variable2)
data:  dataframe$variable2
W = 0.97508, p-value < 2.2e-16
Run Code Online (Sandbox Code Playgroud)

r transformation

23
推荐指数
3
解决办法
10万
查看次数

使用glmer解决警告消息

和其他许多人一样,我在运行一个使用包lme4中的glmer功能的模型时遇到了麻烦.

这是我的模型:

model = glmer(depvar ~ variety*cover+amplitude+time+ (1|pp) + (1|stim), 
  data = datafile, family=poisson)
Run Code Online (Sandbox Code Playgroud)

这是我得到的警告:

Warning message:
In checkConv(attr(opt, &quot;derivs&quot;), opt$par, 
  ctrl = control$checkConv,  :
    Model failed to converge with max|grad| = 0.00606839 
   (tol = 0.001, component 1)
Run Code Online (Sandbox Code Playgroud)

我在这个链接上看到,如果我添加

control=glmerControl(optimizer="bobyqa",optCtrl=list(maxfun=100000))
Run Code Online (Sandbox Code Playgroud)

在我的模型的最后,我解决了这个问题.我试过,所以我的模型现在是:

model = glmer(depvar ~ variety*cover+amplitude+time+ 
   (1|pp) + (1|stim), data = datafile, family=poisson,
    control=glmerControl(optimizer="bobyqa",
            optCtrl=list(maxfun=100000)))
Run Code Online (Sandbox Code Playgroud)

它没有给出任何警告信息.

我想问一下是否有人可以解释我在模型中添加的内容,因为我不确定我是否理解它.此外,这是解决警告问题的可接受的解决方案吗?或者任何人以不同的方式解决它?

非常感谢.

没有的输出control=glmerControl(optimizer="bobyqa", optCtrl=list(maxfun=100000)))是:

Generalized linear mixed model fit by maximum likelihood (Laplace Approximation) ['glmerMod']
 Family: poisson  ( log ) …
Run Code Online (Sandbox Code Playgroud)

warnings r lme4

8
推荐指数
1
解决办法
1万
查看次数

如何将粘贴与 for 循环一起使用?

我正在尝试在循环中使用stringi库中的函数stri_join ,但我遇到了困难。我想获取“A_1.png”,“A_2.png”,“A_3.png”,“A_4.png”,“A_5.png”,依此类推,直到“A_200.png”。

这是我的尝试:

 x <- c(1:200)
 x
 for (i in 1:length(x)){
   Names <-paste("A_", 1:length(i), ".png",sep = "")
   print(Names)
 }
Run Code Online (Sandbox Code Playgroud)

我获得“A_1.png”200次。如果你能指出我所缺少的东西。

loops r stringi

6
推荐指数
1
解决办法
1万
查看次数

基于公共列合并数据帧,但保留 x 中的所有行

我需要合并两个数据帧xy,它们有大约 50 列公共列和一些唯一列,并且我需要保留x中的所有行。

如果我运行它会起作用:

 NewDataframe <- merge(x, y, by=c("ColumnA", "ColumnB", "ColumnC"),all.x=TRUE)
Run Code Online (Sandbox Code Playgroud)

问题是有超过 50 个公共列,我宁愿避免键入所有公共列的名称。

我尝试过:

 NewDataframe <- merge(x, y, all.x=TRUE)
Run Code Online (Sandbox Code Playgroud)

但出现以下错误:

 Error in merge.data.table(x, y, all.x = TRUE) :
 Elements listed in `by` must be valid column names in x and y
Run Code Online (Sandbox Code Playgroud)

有没有什么方法可以使用公共列而不输入所有列,但保留xby中的所有行?

谢谢。

merge r dataframe

3
推荐指数
2
解决办法
3万
查看次数

找到另一个矩阵中一个矩阵的公共值

我有一个矩阵MyMatrix 2549x13double

来自MyMatrix的几个示例行:

-7.80   -4.41   -0.08   2.51    6.31    6.95    4.97    2.91    0.66    -0.92   0.31    1.24    -0.07
4.58    5.87    6.18    6.23    5.20    4.86    5.02    5.33    3.69    1.36    -0.54   0.28    -1.20
-6.22   -3.77   1.18    2.85    -3.55   0.52    3.24    -7.77   -8.43   -9.81   -6.05   -5.88   -7.77
-2.21   -3.21   -4.44   -3.58   -0.89   3.40    6.56    7.20    4.30    -0.77   -5.09   -3.18   0.43
Run Code Online (Sandbox Code Playgroud)

我已经确定了矩阵MyMatrix的每一行的最大值如下:

 [M Ind] = max(MyMatrix, [], 2);
Run Code Online (Sandbox Code Playgroud)

我在M中获得的示例行:

6.95
6.23
3.24
7.20
Run Code Online (Sandbox Code Playgroud)

现在,我想在MyMatrix中选择M中找到的最大值之前和之后的2个值,因为我需要计算这5个值的平均值.所以,在这个例子中,我想选择:

2.51 …
Run Code Online (Sandbox Code Playgroud)

matlab matrix

1
推荐指数
1
解决办法
108
查看次数

标签 统计

r ×4

dataframe ×1

lme4 ×1

loops ×1

matlab ×1

matrix ×1

merge ×1

stringi ×1

transformation ×1

warnings ×1