我首先想说的是,我明白计算非线性回归的R ^ 2值并不完全正确或者是有效的事情.
然而,我正处于将SigmaPlot中的大部分工作执行到R的过渡期,对于我们的非线性(浓度 - 响应)模型,同事习惯于查看与模型相关的R ^ 2值来估计优度-of配合.
SigmaPlot使用1-(残留SS /总SS)计算R ^ 2,但在RI中似乎无法提取总SS(残留SS在摘要中报告).
当我尝试使用更好的适合度估算器时,我将非常感激任何帮助实现这一点.
干杯.
我想运行中的R多项式Logit并使用了两个库,nnet并且mlogit,其产生不同的结果和报告不同类型的统计数据.我的问题是:
什么是系数和报告标准误差之间discrepency的来源nnet和那些报道mlogit?
我想用Latex文件将结果报告给文件stargazer.这样做时,存在一个有问题的权衡:
如果我使用mlogit从那时开始的结果,我得到了我想要的统计数据,例如psuedo R平方,但输出是长格式的(见下面的例子).
如果我使用nnet那时的结果,格式是预期的,但它报告我不感兴趣的统计数据,如AIC,但不包括,例如,psuedo R平方.
我想在我使用时mlogit的格式化中报告统计数据.nnetstargazer
这是一个可重复的示例,有三种选择:
library(mlogit)
df = data.frame(c(0,1,1,2,0,1,0), c(1,6,7,4,2,2,1), c(683,276,756,487,776,100,982))
colnames(df) <- c('y', 'col1', 'col2')
mydata = df
mldata <- mlogit.data(mydata, choice="y", shape="wide")
mlogit.model1 <- mlogit(y ~ 1| col1+col2, data=mldata)
Run Code Online (Sandbox Code Playgroud)
编译时的tex输出是我所说的"长格式",我认为这是不希望的:
现在,使用nnet:
library(nnet)
mlogit.model2 = multinom(y ~ 1 + col1+col2, data=mydata)
stargazer(mlogit.model2)
Run Code Online (Sandbox Code Playgroud)
给出tex输出:
这是我想要的"宽"格式.注意不同的系数和标准误差.
我从4次多项式生成了一些数据,并希望在Keras中创建回归模型以适合该多项式。问题在于,拟合后的预测似乎基本上是线性的。由于这是我第一次使用神经网络,因此我假设我犯了一个非常琐碎而愚蠢的错误。
这是我的代码:
model = Sequential()
model.add(Dense(units=200, input_dim=1))
model.add(Activation('relu'))
model.add(Dense(units=45))
model.add(Activation('relu'))
model.add(Dense(units=1))
model.compile(loss='mean_squared_error',
optimizer='sgd')
model.fit(x_train, y_train, epochs=20, batch_size=50)
loss_and_metrics = model.evaluate(x_test, y_test, batch_size=100)
classes = model.predict(x_test, batch_size=1)
Run Code Online (Sandbox Code Playgroud)
x_train和y_trainnumpy数组,包含此文件中的前9900个条目。
我尝试了不同的batch_size,时代数,图层大小和训练数据量。似乎没有任何帮助。
请指出所有您认为没有意义的内容!
我有以下数据框,我希望对其执行一些回归。我正在使用 Seaborn,但似乎找不到合适的非线性函数。下面是我的代码及其输出,下面是我正在使用的数据框 df. 注意我已经截断了该图中的轴。
我想拟合泊松或高斯分布风格的函数。
import pandas
import seaborn
graph = seaborn.lmplot('$R$', 'Equilibrium Value', data = df, fit_reg=True, order=2, ci=None)
graph.set(xlim = (-0.25,10))
Run Code Online (Sandbox Code Playgroud)
然而这会产生下图。
df
R Equilibrium Value
0 5.102041 7.849315e-03
1 4.081633 2.593005e-02
2 0.000000 9.990000e-01
3 30.612245 4.197446e-14
4 14.285714 6.730133e-07
5 12.244898 5.268202e-06
6 15.306122 2.403316e-07
7 39.795918 3.292955e-18
8 19.387755 3.875505e-09
9 45.918367 5.731842e-21
10 1.020408 9.936863e-01
11 50.000000 8.102142e-23
12 2.040816 7.647420e-01
13 48.979592 2.353931e-22
14 43.877551 4.787156e-20
15 34.693878 6.357120e-16
16 27.551020 9.610208e-13
17 …Run Code Online (Sandbox Code Playgroud) I am facing a problem I do not manage to solve. I would like to use nlme or nlmODE to perform a non linear regression with random effect using as a model the solution of a second order differential equation with fixed coefficients (a damped oscillator).
I manage to use nlme with simple models, but it seems that the use of deSolve to generate the solution of the differential equation causes a problem. Below an example, and the problems I …
这里我有温度时间序列面板数据,我打算为它运行分段回归或三次样条回归.首先,我快速研究了分段回归概念及其在R in中的基本实现,SO初步了解了如何继续我的工作流程.在我的第一次尝试中,我试图通过使用splines::nsin splinespackage 来运行样条回归,但是我没有得到正确的条形图.对我来说,使用基线回归或分段回归或样条回归可以起作用.
以下是我的面板数据规范的一般情况:在下面显示的第一行是我的因变量,以自然对数项和自变量表示:平均温度,总降水量和11个温度箱以及每个箱宽(AKA,箱窗) )是3摄氏度.(< - 6,-6~-3,-3~0,...> 21).
可重复的例子:
以下是使用实际温度时间序列面板数据模拟的可重现数据:
set.seed(1) # make following random data same for everyone
dat <- data.frame(index=rep(c("dex111", "dex112", "dex113", "dex114", "dex115"),
each=30),
year=1980:2009,
region= rep(c("Berlin", "Stuttgart", "Böblingen",
"Wartburgkreis", "Eisenach"), each=30),
ln_gdp_percapita=rep(sample.int(40, 30), 5),
ln_gva_agr_perworker=rep(sample.int(45, 30), 5),
temperature=rep(sample.int(50, 30), 5),
precipitation=rep(sample.int(60, 30), 5),
bin1=rep(sample.int(32, 30), 5),
bin2=rep(sample.int(34, 30), 5),
bin3=rep(sample.int(36, 30), 5),
bin4=rep(sample.int(38, 30), 5),
bin5=rep(sample.int(40, 30), 5),
bin6=rep(sample.int(42, 30), 5),
bin7=rep(sample.int(44, 30), 5),
bin8=rep(sample.int(46, 30), 5),
bin9=rep(sample.int(48, 30), …Run Code Online (Sandbox Code Playgroud) 我正在使用包中的nlsLM函数minpack.lm来查找参数的值a, e,并且c这些函数最适合数据out.这是我的代码:
n <- seq(0, 70000, by = 1)
TR <- 0.946
b <- 2000
k <- 50000
nr <- 25
na <- 4000
nd <- 3200
d <- 0.05775
y <- d + ((TR*b)/k)*(nr/(na + nd + nr))*n
## summary(y)
out <- data.frame(n = n, y = y)
plot(out$n, out$y)
## Estimate the parameters of a nonlinear model
library(minpack.lm)
k1 <- 50000
k2 <- 5000
fit_r <- nlsLM(y ~ …Run Code Online (Sandbox Code Playgroud) 我在 R 中使用响应变量,即学生在特定课程中收到的字母等级。响应是有序的,在我看来,在逻辑上似乎是成正比的。我的理解是,在使用 polr() 而不是 multinom() 之前,我需要测试它是否成比例。
对于我的一门数据课程,我“测试”了这样的比例:
M1 <- logLik(polrModel) #'log Lik.' -1748.180691 (df=8)
M2 <- logLik(multinomModel) #'log Lik.' -1734.775727 (df=20)
G <- -2*(M1$1 - M2$2)) #I used a block bracket here in the real code
# 26.8099283
pchisq(G,12,lower.tail = FALSE) #DF is #of predictors
#0.008228890393 #THIS P-VAL TELLS ME TO REJECT PROPORTIONAL
Run Code Online (Sandbox Code Playgroud)
对于测试比例优势假设的第二种方法,我还运行了两个 vglm 模型,一个与family=cumulative(parallel =TRUE)另一个与family=cumulative(parallel =FALSE). 然后我pchisq()用模型偏差的差异和剩余自由度的差异进行了测试。
这两种方式中的任何一种都值得尊敬吗?如果没有,我很乐意帮助您确定是否接受或拒绝比例几率假设的实际编码!
除了上述两个测试之外,我还分别针对每个预测变量绘制了我的累积概率图。我读到我希望这些线平行。我不明白的是,polr()您的输出是每个自变量(系数)的单个斜率,然后是特定的截距,具体取决于您使用的累积概率(例如:P(Y<=A), P( Y<=B) 等)。那么,如果每个方程的斜率系数都相同,那么这些线怎么可能不平行?
我在 Chris Bilder 的 YouTube 课程中学习了我的基础知识;他在第 …
在机器学习中,我们说:
然而,在一些讲座我看到有人说一个模型是线性基础上的权重,即权重系数是线性和特征的程度并不重要,无论是直线(X 1)或多项式Λ(x 1 2).真的吗?如何区分线性和非线性模型?它是基于权重还是特征值?
regression machine-learning linear-regression non-linear-regression
我正在使用 scipy.optimize 的east_squares 方法来执行约束非线性最小二乘优化。我想知道如何获取拟合参数的协方差矩阵,以便获得拟合参数的误差线?
对于curve_fit和lesssq来说,这似乎非常清楚,但对于 east_squares 方法来说,则不太清楚(至少对我来说)。
我一直在做的一种方法是,因为我知道least_squares返回雅可比矩阵J(这是“jac”返回值),那么我所做的就是用2*J^T J近似Hessian H。最后,协方差矩阵是 H^{-1},因此大约是 (2*J^TJ)^{-1},但我担心这对协方差的近似可能太粗糙?
python curve-fitting scipy data-fitting non-linear-regression
r ×6
regression ×4
python ×3
data-fitting ×1
keras ×1
mlogit ×1
multinomial ×1
nlme ×1
ode ×1
plm ×1
scipy ×1
seaborn ×1
stargazer ×1
statistics ×1