我需要将一些数据转换为"正常形状",并且我读到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) 和其他许多人一样,我在运行一个使用包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, "derivs"), 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) 我正在尝试在循环中使用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次。如果你能指出我所缺少的东西。
我需要合并两个数据帧x和y,它们有大约 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中的所有行?
谢谢。
我有一个矩阵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)