我很困惑为什么R和statsmodels中的逻辑回归模型不一致.
如果我在R中准备一些数据
# From https://courses.edx.org/c4x/MITx/15.071x/asset/census.csv
library(caTools) # for sample.split
census = read.csv("census.csv")
set.seed(2000)
split = sample.split(census$over50k, SplitRatio = 0.6)
censusTrain = subset(census, split==TRUE)
censusTest = subset(census, split==FALSE)
Run Code Online (Sandbox Code Playgroud)
然后运行逻辑回归
CensusLog1 = glm(over50k ~., data=censusTrain, family=binomial)
Run Code Online (Sandbox Code Playgroud)
我看到的结果如
Estimate Std. Error z value Pr(>|z|)
(Intercept) -8.658e+00 1.379e+00 -6.279 3.41e-10 ***
age 2.548e-02 2.139e-03 11.916 < 2e-16 ***
workclass Federal-gov 1.105e+00 2.014e-01 5.489 4.03e-08 ***
workclass Local-gov 3.675e-01 1.821e-01 2.018 0.043641 *
workclass Never-worked -1.283e+01 8.453e+02 -0.015 0.987885
workclass Private 6.012e-01 1.626e-01 …Run Code Online (Sandbox Code Playgroud) 我经常使用all函数,每当我得到TRUE,我发现自己检查比较的所有元素都不是NULL或为空,因为这可能会给出错误的TRUE结果.
例:
y<-1:10
z<-5:15
# I make a comparison which is really true
all(y[y>5 & y<10]==z[z>5 & z<10])
[1] TRUE
# Now I make a typo because I often do, but I don't notice:
all(y[y>5 & y<0]==z[z>5 & z<10])
[1] TRUE
# the result is also true but only because y[y>5 & y<0] is empty:
y[y>5 & y<0]
#integer(0)
Run Code Online (Sandbox Code Playgroud)
因此,在第二种情况下,如果我不检查每个元素all,我将使用我的代码,认为一切顺利,当然,最终结果将是不正确的.
我没有检查我all拨打电话的元素,而是可以添加一个length电话:(all(y[y>5 & y<0]==z[z>5 & z<10]) …
I have a dataframe in R that looks something like this:
library(tibble)
sample <- tribble(~subj, ~session,
"A", 1,
"A", 2,
"A", 3,
"B", 1,
"B", 2,
"C", 1,
"C", 2,
"C", 3,
"C", 4)
Run Code Online (Sandbox Code Playgroud)
As you can see from this example, there are a number of sessions for each subject, but subjects do not all have the same number of sessions. There are 94 rows in my real dataset (5 subjects, between 15 and 20 different sessions each).
I have …
我有一个由风向矢量组成的数据集,如下所示:
wdir <- c(296.9, 215.2, 204.8, 110.8, 287.6, 203.4, 253.1, 46.0, 298.8, 62.8, 183.4, 62.3,
44.3, 97.6, 78.6, 125.6, 116.9, 121.0, 111.2, 335.8, 287.4, 51.7, 232.6, 265.5,
269.7, 20.5, 17.0, 310.8)
Run Code Online (Sandbox Code Playgroud)
标量值以度为单位.
如何计算平均风向?
df <- data.frame(
id = c('A1','A2','A4','A2','A1','A4','A3','A2','A1','A3'),
value = c(4,3,1,3,4,6,6,1,8,4))
Run Code Online (Sandbox Code Playgroud)
我希望在每个id组中获得最大值.我试过跟随,但得到一个错误,说替换有4行,数据有10我理解,但不知道如何纠正
df$max.by.id <- aggregate(value ~ id, df, max)
Run Code Online (Sandbox Code Playgroud)
这就是我最终成功地做到了这一点
max.by.id <- aggregate(value ~ id, df, max)
names(max.by.id) <- c("id", "max")
df2 <- merge(df,max.by.id, by.x = "id", by.y = "id")
df2
# id value max
#1 A1 4 8
#2 A1 4 8
#3 A1 8 8
#4 A2 3 3
#5 A2 3 3
#6 A2 1 3
#7 A3 6 6
#8 A3 4 6
#9 A4 1 6
#10 …Run Code Online (Sandbox Code Playgroud) 我是 R 的初学者,在使用列值向量对数据帧进行索引时遇到问题。
我想选择 2 位参与者的所有行。
data 是数据框。参与者是一个列
data[data$participant == c(8, 10),])
我认为这应该给我来自参与者 8 和 10 的所有行,但它却给我来自参与者 8 的一半行和来自参与者 10 的一半行。换句话说,
dim(data[data$participant == c(8, 10),])与 double相同dim(data[data$participant == 8,])或dim(data[data$participant == 10,])不同。
问题似乎出在对这些多列类型进行索引的语法上:
data$participant == c(8, 10)
我将不胜感激任何关于如何做到这一点的提示(无需单独为每个参与者做)!谢谢你!
我想提取除模式之外的所有内容并将其返回到字符串中。
我试图将 str_extract_all 与 sapply 和 cat 结合在一起
x = c("a_1","a_20","a_40","a_30","a_28")
data <- tibble(age = x)
# extracting just the first pattern is easy
data %>%
mutate(age_new = str_extract(age,"[^a_]"))
# combining str_extract_all and sapply doesnt work
data %>%
mutate(age_new = sapply(str_extract_all(x,"[^a_]"),function(x) cat(x,sep="")))
class(str_extract_all(x,"[^a_]"))
sapply(str_extract_all(x,"[^a_]"),function(x) cat(x,sep=""))
Run Code Online (Sandbox Code Playgroud)
返回 NULL 而不是串联模式
我有一个csv文件,它有两行,每行对应一个单词列表.我把这个csv文件读成2*2000矩阵,如下所示:
termlist = as.matrix(read.csv("termlist.csv",sep=",",header=FALSE))
Run Code Online (Sandbox Code Playgroud)
现在,我想知道这两行的以下信息,即第一行和第二行的交集列表; 从第二行中减去此交集列表后的剩余列表.
这可能是一个非常简单的答案,但似乎无法找到解决方案.我有一个函数,它提供了一组参数:
theta <-
function(
e = 0.2,l= 0.01,p= 0.05)
return(c(e=e,l=l,p=p))
Run Code Online (Sandbox Code Playgroud)
因此,我可以从中返回一组参数,同时更改其中的一个或多个,例如通过使用
theta(e=0.1) #or
theta(l=0.1)
Run Code Online (Sandbox Code Playgroud)
我的问题是我想在另一个函数中调用此函数,其中该函数的输入是变量之一.
所以例如一个函数如:
randFunc<-function(parameter,value){
s<-theta(parameter=value)
return(s)
}
Run Code Online (Sandbox Code Playgroud)
然后用
randFunc("e",0.1) #or
randFunc("l",0.3)
Run Code Online (Sandbox Code Playgroud)
但是我会得到错误"theta中的错误(参数=值):unused argument(parameter = value)"
我尝试了一些东西,但似乎无法获得在theta函数中使用的参数"value".
这是一个小的data.frame:
e = data.frame(A=c(letters[1:5], 1:5))
Run Code Online (Sandbox Code Playgroud)
关于执行以下命令时发生的事情,我有点困惑:
unclass(e$A) %>% as.numeric()
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
[1] 6 7 8 9 10 1 2 3 4 5
Run Code Online (Sandbox Code Playgroud)
为什么a:e被视为6:10?