考虑以下R代码(我认为最终会调用一些Fortran):
X <- 1:1000
Y <- rep(1,1000)
summary(lm(Y~X))
Run Code Online (Sandbox Code Playgroud)
为什么值汇总返回?这个模型不应该适合,因为Y没有变化吗?更重要的是,为什么模型R ^ 2~ = .5?
编辑
我跟踪了从lm到lm.fit的代码,可以看到这个调用:
z <- .Fortran("dqrls", qr = x, n = n, p = p, y = y, ny = ny,
tol = as.double(tol), coefficients = mat.or.vec(p, ny), residuals = y,
effects = y, rank = integer(1L), pivot = 1L:p, qraux = double(p),
work = double(2 * p), PACKAGE = "base")
Run Code Online (Sandbox Code Playgroud)
这就是实际情况似乎发生的地方.看http://svn.r-project.org/R/trunk/src/appl/dqrls.f)并没有帮助我理解发生了什么,因为我不知道fortran.
我对具有相同自变量的两组进行回归。然后,我想测试两个回归的斜率是否显着不同。
我读到,当两组之间的样本量和方差不相等时,建议进行韦尔奇 t 检验。我发现了这个t.test()功能,但是我没有在斜坡上应用它。
Data <- data.frame(
gender = sample (c("men", "women"), 2000, replace = TRUE),
var1 = sample (c("value1", "value2"), 2000, replace = TRUE),
var2 = sample (c("valueA", "valueB"), 2000, replace = TRUE),
var3 = sample (c("valueY", "valueZ"), 2000, replace = TRUE),
y = sample(0:10, 2000, replace = TRUE)
)
Run Code Online (Sandbox Code Playgroud)
我的两个回归:
lm.male <- lm(y ~ var1 + var2 + var3, data = subset(Data, gender == "men"))
summary(lm.male)
lm.women <- lm(y ~ var1 + var2 + var3, data …Run Code Online (Sandbox Code Playgroud) 我正在使用tensorflow构建线性回归模型,以下是我的代码。但根据我的实验,我必须对训练数据进行洗牌,否则权重和偏差将被估计为 na。谁能向我解释为什么我必须打乱数据?谢谢
train_X = np.linspace(1, 50, 100)
train_Y = 1.5 * train_X + 10.0 + np.random.normal(scale=10, size=1)
data = list(zip(train_X, train_Y))
random.shuffle(data) # have to shuffle data, otherwise w and b would be na
X = tf.placeholder(dtype=tf.float32, shape=[], name='X')
Y = tf.placeholder(dtype=tf.float32, shape=[], name='Y')
W = tf.Variable(0.0, name='weight')
b = tf.Variable(0.0, name='bias')
Y_pred = W * X + b
cost = tf.square(Y-Y_pred, name="cost")
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.001).minimize(cost)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for _ in range(30):
for x, y in data: …Run Code Online (Sandbox Code Playgroud) 如何自动提取曲线中R^2对整个曲线不理想的拟合良好的线性部分?
例如我有什么:
数据.lm
x y
1 1 1
2 2 8
3 3 3
4 4 4
5 5 5
6 6 6
7 7 7
8 8 5
9 9 2
10 10 7
Run Code Online (Sandbox Code Playgroud)
rg.lm<- lm(y~x, data.lm) rg.lm
Coefficients:
(Intercept) x
3.7333 0.1939
Run Code Online (Sandbox Code Playgroud)
摘要(rg.lm)
Residuals:
Min 1Q Median 3Q Max
-3.4788 -1.1136 0.0061 1.2712 3.8788
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.7333 1.6111 2.317 0.0491 *
x 0.1939 0.2597 0.747 0.4765
Residual standard error: 2.358 on 8 …Run Code Online (Sandbox Code Playgroud) 我有大数据框,我需要有效地计算数据框行和给定值列表之间的相关性。例如:
dfa= DataFrame(np.zeros((1,4)) ,columns=['a','b','c','d'])
dfa.ix[0] = [2,6,8,12]
a b c d
2.0 6.0 8.0 12.0
dfb= DataFrame([[2,6,8,12],[1,3,4,6],[-1,-3,-4,-6]], columns=['a','b','c','d'])
a b c d
0 2 6 8 12
1 1 3 4 6
2 -1 -3 -4 -6
Run Code Online (Sandbox Code Playgroud)
我希望得到:
0 1
1 0.5
2 -0.5
Run Code Online (Sandbox Code Playgroud)
我尝试了很多版本,例如:
dfb.T.corrwith(dfa.T, axis=0)
Run Code Online (Sandbox Code Playgroud)
但我得到的是很多南的
我正在使用 cross_val_score() 函数来计算R2拟合系数。这是我的代码:
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import cross_val_score
X = data.iloc[:,0:13]
y = data.iloc[:,13]
lin = LinearRegression()
MSE = cross_val_score(lin,X,y,scoring = 'neg_mean_squared_error',cv = 10)
MSE
array([ -9.28694671, -14.15128316, -14.07360615, -35.20692433,
-31.88511666, -19.83587796, -9.94726918, -168.37537954,
-33.32974507, -10.96041068])
MSE.mean()
-34.705255944525462
R2= cross_val_score(lin,X,y,cv = 10)
R2
array([ 0.73376082, 0.4730725 , -1.00631454, 0.64113984, 0.54766046,
0.73640292, 0.37828386, -0.12922703, -0.76843243, 0.4189435 ])
R2.mean()
0.20252899006052702
Run Code Online (Sandbox Code Playgroud)
我发现这些结果非常奇怪,特别是R2结果:
R2分数非常“分散”。我执行相同的回归任务并使用“Rapidminer”计算分数,我得到了更多“逻辑”结果:
我一直在研究 Spark 的文档,但仍然找不到如何在进行线性回归后获取协方差矩阵。
给定输入训练数据,我做了一个非常简单的线性回归,与此类似:
val lr = new LinearRegression()
val fit = lr.fit(training)
Run Code Online (Sandbox Code Playgroud)
获取回归参数很简单fit.coefficients,但似乎没有关于如何获取协方差矩阵的信息。
为了澄清一下,我正在寻找类似于vcovR 中的函数。有了这个,我应该能够做一些类似vcov(fit)获取协方差矩阵的事情。任何其他有助于实现这一目标的方法也都可以。
编辑
这里详细讨论如何从线性回归得到协方差矩阵。标准差很容易获得,因为它是由 提供的fit.summary.meanSsquaredError。然而,参数(X'X) -1很难得到。看看这是否可以用来以某种方式计算协方差矩阵,这将是很有趣的。
scala covariance linear-regression apache-spark apache-spark-mllib
lm()我对R 中的函数有疑问。我知道lm()它用于回归建模,并且我知道可以这样做:
lm(response ~ explanatory1 + explanatory2 + ... + explanatoryN, data = dataset)
Run Code Online (Sandbox Code Playgroud)
现在我的问题是:“假设它N很大,是否有一个我可以使用的捷径,不需要我编写所有N变量名称?”
提前致谢!
编辑:我遗漏了我真正需要答案的问题的很大一部分。假设我想删除1解释k变量并只包含n-k这些变量。
假设我对某个因变量y相对于某个自变量进行了多次测量x。我还记录了每次测量的不确定度dy。作为一个例子,这可能看起来像
import numpy as np
x = np.array([1, 2, 3, 4])
y = np.array([4.1, 5.8, 8.1, 9.7])
dy = np.array([0.2, 0.3, 0.2, 0.4])
Run Code Online (Sandbox Code Playgroud)
现在假设我希望测量值遵循线性关系y = mx + b,并且我想确定y_umn某些未测量的 x 值的y 值x_unm。如果不考虑错误,我可以很容易地在 Python 中执行线性拟合:
fit_params, residuals, rank, s_values, rcond = np.polyfit(x, y, 1, full=True)
poly_func = np.poly1d(fit_params)
x_unm # The unmeasured x value
y_unm = poly_func(x_unm) # The unmeasured x value
Run Code Online (Sandbox Code Playgroud)
我对这种方法有两个问题。首先是np.polyfit没有包含每个点的错误。其次,我不知道不确定性y_unm是什么。
有谁知道如何使数据与不确定性相匹配,从而使我能够确定 的不确定性y_unm …
我正在尝试调整线性模型上的对比编码,我想知道因子的每个级别是否与总平均值显着不同。
\n让\xe2\x80\x99s 表示该因子具有级别“A”、“B”和“C”。最常见的对照治疗对比显然将“A”设置为参考水平,并将“B”和“C”与其进行比较。这不是我想要的,因为“A”级没有出现在模型摘要中。
\n偏差编码似乎也没有给我想要的东西,因为它将级别“C”的对比矩阵设置为[-1,-1,-1],现在这个级别没有显示在模型摘要中。
set.seed(1)\ny <- rnorm(6, 0, 1)\nx <- factor(rep(LETTERS[1:3], each = 2))\nfit <- lm(y ~ x, contrasts = list(x = contr.sum))\nsummary(fit)\nRun Code Online (Sandbox Code Playgroud)\n此外,报告的级别名称已从“A”、“B”更改为“1”和“2”。
\nCall:\nlm(formula = y ~ x, contrasts = list(x = contr.sum))\n\nResiduals:\n 1 2 3 4 5 6 \n-0.405 0.405 -1.215 1.215 0.575 -0.575 \n\nCoefficients:\n Estimate Std. Error t value Pr(>|t|)\n(Intercept) -0.02902 0.46809 -0.062 0.954\nx1 -0.19239 0.66198 -0.291 0.790\nx2 0.40885 0.66198 0.618 0.581\n\nResidual standard error: 1.147 on 3 degrees of freedom\nMultiple …Run Code Online (Sandbox Code Playgroud) r ×5
lm ×4
python ×3
regression ×3
statistics ×2
apache-spark ×1
correlation ×1
covariance ×1
numpy ×1
pandas ×1
performance ×1
scala ×1
scikit-learn ×1
scoring ×1
shortcut ×1
t-test ×1
tensorflow ×1