我试图转换一些数据,以满足线性模型的假设(独立性、线性、方差齐性、正态性).我想这样做,以便我可以进行方差分析或类似的.在我的线性模型中对响应变量进行平方根变换是可行的,但在try 记录变换时出现了一个错误.

我试过:

但这个错误似乎是:

通常情况下,以这种方式转换日志(log)对我来说很有效,所以我不确定这里出了什么问题.响应变量的数据都是十进制数据(例如0.001480370),这可能是原因吗?如果是这样的话,有人能告诉我如何转换这些数据吗.

This is these are residuals plots when the data is untransformed: enter image description here

推荐答案

在要记录转换的变量中可能有零.Example:

df1[1, 1] <- 0

lm(Y ~ log(X1) + X2 + X3, df1)
# Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 
#   NA/NaN/Inf in 'x'
# In addition: Warning message:
#   In log(X1) : NaNs produced

你可以考虑log1p,计算log(1+x).

lm(Y ~ log1p(X1 + 1) + X2 + X3, df1)
# Call:
# lm(formula = Y ~ log1p(X1 + 1) + X2 + X3, data = df1)
# 
# Coefficients:
#   (Intercept)  log1p(X1 + 1)             X2             X3  
#        2.1257        -1.5689         0.5337         1.0699  

然而,这改变了解释,见related post on Cross Validated.无论如何,你应该决定如何处理零值.


Data:

df1 <- structure(list(X1 = c(0, -0.564698171396089, 0.363128411337339, 
0.63286260496104, 0.404268323140999, -0.106124516091484, 1.51152199743894, 
-0.0946590384130976, 2.01842371387704, -0.062714099052421), X2 = c(1.30486965422349, 
2.28664539270111, -1.38886070111234, -0.278788766817371, -0.133321336393658, 
0.635950398070074, -0.284252921416072, -2.65645542090478, -2.44046692857552, 
1.32011334573019), X3 = c(-0.306638594078475, -1.78130843398, 
-0.171917355759621, 1.2146746991726, 1.89519346126497, -0.4304691316062, 
-0.25726938276893, -1.76316308519478, 0.460097354831271, -0.639994875960119
), Y = c(2.00627879909717, 1.08150911284604, 1.41465103918476, 
1.37787039819613, 3.04863502238068, -0.828228728348569, 0.198328716326719, 
-2.34295203837687, -1.61863179473641, 1.03962922460575)), row.names = c(NA, 
-10L), class = "data.frame")

R相关问答推荐

如何使用Cicerone指南了解R Shiny中传单 map 的元素?

如何在ggplot 2 geom_segment图表中将UTC转换为EET?

使用sensemakr和fixest feols模型(R)

R创建一个数据透视表,计算多个组的百分比

在位置周围设定一个半径并识别该半径内的其他位置

如何删除gggvenn与gggplot绘制的空白?

如何利用模型函数在格图中添加双曲/指数曲线

当两个图层映射到相同的美学时,隐藏一个图层的图例值

如何改变时间图R中的悬停信息?

R根据条件进行累积更改

将Posict转换为数字时的负时间(以秒为单位)

以NA为通配符的R中的FULL_JOIN以匹配其他数据中的任何值.Frame

R:如果为NA,则根据条件,使用列名模式将缺少的值替换为另一列中的值

将工作目录子文件夹中的文件批量重命名为顺序

将文本批注减少到gglot的y轴上的单个值

为什么不能使用lApply在包装函数中调用子集

使用其他DF中的文件名将列表中的每个元素保存到文件中

使用dqur在不同变量上创建具有多个条件的变量

是什么打破了此Quarto仪表板中的工具提示?

如何准确地指出Read_delim所面临的问题?